전체 글
엔티티를 사용하는데에 주의사항이 몇가지 있다. 기본생성자를 필수적으로 가져야 한다. final class, enum, interface, inner class 에서는 사용할 수 없다. 엔티티의 모든 필드들은 final을 사용할 수 없다. 왜 final 키워드를 사용할 수 없을까? Order 구현 엔티티에 final을 작성했을 때, 롬복이 정상적으로 동작하지 않는다는 에러가 발생한다. 왜 엔티티에서는 final 구문을 쓸 수 없는 지는 “지연로딩"에 있었다. 💡 지연로딩(”fetchType = LAZY”)이란? 엔티티와 관계(join) 맺고 있는 엔티티에 대한 정보는 즉시 로딩되지 않고, getter 메소드가 호출하는 등의 사용 시점에서 로딩된다. JPA는 DB에서 데이터를 조회한 후, 엔티티를 생성할 때..
김영한님의 강의 상속 관계 매핑에 대한 3가지 방법에 대해서 배웠다. mapped_superclass 개념, 사용되는 경우에 대해서 배웠다. A. 조인 전략 @Inheritance(strategy = InheritanceType.JOINED) JPA의 동작방식에 가장 유사한 방식. 각각의 테이블 마다 INSERT 쿼리를 전송하여, 각각의 테이블로 반환. 필드에 맞게 테이블을 조인하는 방식이다. 장점 저장공간 효율화가 가능하다. PK 값을 공유하기 때문에, 외래 키 참조 무결성 제약조건이 활용가능하다. 테이블 정규화가 가능하다. *참조 무결성? 값이 NULL, 참조 릴레이션의 기본키 값과 동일해야 한다. 단점 조회 시 조인을 많이 사용, 성능 저하를 일으킨다. 조회 쿼리가 복잡하다 데이터 저장시 INSER..
학습 목표 ORM에 대해 간략하게 알아보자. 패러다임 불일치에 대해서 알아보자. JPA는 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음이다. 즉, 실제 구현된 클래스가 아닌 구현 클래스와의 매핑을 위해 사용되는 일종의 프레임워크라고 할 수 있다. JPA는 애플리케이션과 JDBC 사이에서 동작하며, 관계형 데이터 베이스를 사용하는 방식을 따른다. JPA를 이해하기 위해서는 ORM에 대해서 학습해야 한다. ORM? Object-relational mapping(객체 관계 매핑) 애플리 케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑, 즉 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 과정이다. ORM이 갖는 장점은 다음과 같다. 객체 지향적인 코드..
ㅇTIL 1.Spring Servlet 개념, HttpServlet header 요청 및 응답을 확인하는 방법을 학습하였다. IntelliJ 환경 세팅을 마친 후, 강의를 진행하는 와중에 ClassNotFoundException 오류가 발생했다. 문제를 확인해본 결과 intelliJ 무료버전에서 War로 프로젝트를 생성했을 경우, Tomcat 서버 오류 즉, IntelliJ 내부 환경 설정에 대한 오류였고, Gradle 환경에서 "Build and Run using" 부분을 기존의 default 값인 Gradle로 바꿔주니 해결되었다. Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet Jackson 라이브러리를..
ㅇTIL 1.Django REST Framework 를 공부하면서, HTTP 메서드에 대한 지식이 많이 부족하다는 것을 깨닫게 되었다. HTTP 강의 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런... www.inflearn.com 그래서 김영한의 강의를 통해서, 장고 뿐만아니라, 앞으로 중점적으로 사용하게 될 스프링을 공부하는 데 있어서도 HTTP 지식은 필수적이라는 생각이 들었다. 여기서 배운 내용은 이후 한번에 정리할 예정이다. 2.Spring isEqualTo vs isSameAs isSameAs : 메모리 상에 같은 객체 주소를 가지고 있는지(주소값 일치를 확인) i..