연관관계
-
03. JPA 연관관계 관리BackEnd/JPA 2021. 8. 13. 14:48
1. 즉시 로딩(EAGER)과 지연 로딩(LAZY) > Member Entity : Team Entity ( N : 1 )가 존재할 때 즉시 로딩은 두 엔티티를 한 번에 조회하지만 지연 로딩은 프록시로 조회한다. > 즉시 로딩은 JPQL에서 N+1 문제를 야기하기 때문에 실무에서는 가급적 지연 로딩만 사용한다. JPQL fetch 조인이나 엔티티 그래프 기능을 사용하는 것이 좋다. (@OneToMany, @ManyToMany는 기본이 지연 로딩이다. @ManyToOne, @OneToOne은 기본이 즉시 로딩이기에 LAZY로 설정한다.) tip) 프록시(Proxy) > em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 > em.getReference(): 데이터베이스 조회를 미루는 가짜(프록..
-
02. JPA Mapping AnnotationBackEnd/JPA 2021. 8. 9. 19:00
Annotation 정의 @Entity JPA가 관리할 객체, JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 > 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자), final 클래스, enum, interface, inner 클래스 사용X (속성) > name : JPA에서 사용할 엔티티 이름을 지정 (기본값: 클래스 이름을 그대로 사용, 기본값 사용 권장) @Table 엔티티와 매핑할 테이블 지정 (속성) > name : 매핑할 테이블 이름 (기본값 : 엔티티 이름을 사용) > catalog : DB catalog 매핑 > schema : DB schema 매핑 > uniqueConstraints(DDL) : DDL 생성 시에 유니크 제약 조건 생성 예) @..