본문 바로가기

SpringDataJPA26

15. 엔티티 간 N-1 단방향 연관 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * N-1 단방향 연관 매핑 참조키를 이용한 N-1 관계를 생성할 수 있다. sight_review는 sight에 대한 review를 저장하는 테이블이다. sight_review는 sight_id를 통해 sight 테이블을 참조한다. * N-1 단방향 연관 매핑 설정 Review 클래스에서 확인할 수 있다. @ManyToOne, @JoinColumn(name = "참조할 칼럼")을 이용해 N-1 단방향 연관 매핑을 설정할 수 있다. * 저장 Review를 저장 할 때, Sight가 필요하기 때문에 해당 Sight를 em.find()로 읽어온 뒤, Review 객체 인스턴스를 생성할 때 넘겨준다. 저장.. 2023. 3. 28.
14. 엔티티 간 1-1 단방향 연관 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 주의사항 연관 매핑은 진짜 필요할 때만 사용할 것 연관된 객체 탐색이 쉽다는 이유로 사용하지 말 것 조회 기능은 별도 모델을 만들어 구현(CQRS) Embeddable 매핑이 가능하다면 Embeddable 매핑 사용할 것 * 참조키 방식 1-1 단방향 연관 매핑 참조키를 이용한 1-1 매핑 관계이다. membership_card테이블은 user_email 칼럼을 이용해서 user테이블을 참조하는 구조다. memeber_ship 카드의 pk(식별자)는 card_no다. 이를 오른쪽처럼 매핑하고 싶을 때, MembershipCard 객체의 owner가 User가 된다. User는 email값을 이용해.. 2023. 3. 27.
13. 엔티티 연관 매핑 시작에 앞서 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 연관 엔티티와 엔티티 간 연결 엔티티가 다른 엔티티를 필드 / 프로퍼티로 참조 MembershipCard 엔티티는 User 엔티티를 필드로 가지고 있다. * 연관 종류 1-1 : 참조키 방식 단 방향, 양 방향 단 방향 : a -> b로만 연관 양 방향 : a b 연관 1-1 : 키 공유 방식 단 방향, 양 방 N-1 : 단 방향 1-N : 콜렉션 단 방향 N-1/1-N : 양 방향 M-N : 단 방향, 양 방향 * 기초 영상에서 다룰 범위 다룰 대상 1-1 연관 단방향 N-1 단방향 1-N 단방향 다루지 않음 양방향 M-N연관 참고 엔티티 간 연관은 거의 사용하지 않음 특히 양방향은 더 없음, .. 2023. 3. 25.
12. 영속 컨텍스트 & 라이프사이클 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 영속 객체와 영속 컨텍스트 영속 엔티티 / 객체 DB 데이터에 매핑되는 메모리 상의 객체 @Entity 애너테이션을 사용한 클래스를 이용해 생성한 객체 영속 컨텍스트에 보관된 객체가 영속 객체가 된다. 영속 컨텍스트 일종의 메모리 저장소 Enitity Manager가 관리할 엔티티 객체를 보관하는 장소 (Entity Type, 식별자)를 key로, 엔티티 객체를 value로 하는 일종의 맵 형태로 저장 EntityManager.close() 영속 컨텍스트 제거 배치처리 X * 영속 컨텍스트와 캐시 동일 식별자 -> 동일 객체 영속 컨텍스트에 보관된 객체 조회 Repeatable Read 효과 특정.. 2023. 3. 23.
11. 값 콜렉션 주의사항 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 목록 조회 값 콜렉션을 eager 하게 fetch한 엔티티를 페이징 처리해서 읽어온다고 해보자. 예를 들어, Role 엔티티에 eager 하게 fetch한 role_perm은 원래는 한 번에 같이 넘어와야 한다. 그러나 일반적인 JPQL을 실행하면, 먼저 role 엔티티들을 가져와 List에 담고, 다시 List를 돌면서 role_perm을 가져온다. 즉, 반복이 2번 일어나게 된다. 이를 해결하기 위해 join fetch 를 사용하면, role을 읽어올 때 role과 role_perm을 join해서 데이터를 읽어온다. 그러나 이 때는 페이징 처리를 했음에도 limit을 걸지않고 일단 두 테이블을.. 2023. 3. 22.
반응형