본문 바로가기
728x90
반응형

전체 글170

[JPA] 프록시와 연관관계 관리 프록시 개요 '엔티티 조회 시 사용하지도 않는 정보도 같이 조회를 해야하는가?' 라는 의문이 생긴다. 예시 Member 조회 시 Team도 같이 조회해야 할까? Member와 Team 모두 사용한다면 같이 조회되는 것이 효율적이지만 Member만 사용한다면 Team을 굳이 조회할 필요는 없는 것이다. EntityManager.find() VS EntityManager.getReference() EntityManager.find() : 데이터베이스를 통해 실제 엔티티 객체 조회 EntityManager.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 (데이터베이스에 쿼리 실행되지 않는다.) 예제 - Member.java @Entity public class Memb.. 2021. 8. 27.
[JPA] 실습 - 상속관계 매핑 이전 실습에서 요구사항을 추가해보자 요구사항 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다. 모든 데이터는 등록일과 수정일이 필수이다. 테이블 및 엔티티 설계 실습 테이블 설계 내용을 보면 단일 테이블 전략을 사용하여 구성한 것을 확인할 수 있다. 상품 종류 추가 - Item.java @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 단일 테이블 전략 @DiscriminatorColumn(name = "DTYPE") // 구분자 컬럼 지정 public abstract class Item { @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private St.. 2021. 8. 25.
[JPA] 고급 매핑 상속 관계 매핑 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것 객체는 상속관계가 있지만 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 (1) 각각 테이블로 변환 -> 조인 전략 (2) 통합 테이블로 변환 -> 단일 테이블 전략 (3) 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name = ".. 2021. 8. 24.
[JPA] 실습 - 다양한 연관관계 매핑 이전 실습에 배송, 카테고리 관계를 추가해보자. 엔티티 구성 주문과 배송은 1:1 (@OneToOne) 상품과 카테고리는 N:M (@ManyToMany) 테이블 및 엔티티 설계 실습 주문 - 배송 소스 - Order.java @Entity @Table(name = "ORDERS") public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status;.. 2021. 8. 23.
[JPA] 다양한 연관관계 매핑 연관관계 매핑 시 고려사항 다중성 JPA의 어노테이션은 전부 다 DB와 매핑하기 위해 존재, DB관점에서의 다중성을 고민하면 된다. 다대일(@ManyToOne), 일대다(@OneToMany), 일대일(@OneToOne), 다대다(@ManyToMany) ※ 다대다는 실무에서 절대로 사용하면 안된다. 단방향, 양방향 테이블 : 외래키 하나로 양쪽 조인 가능, 방향이라는 개념이 없다. 객체 : 참조용 필드가 있는 쪽으로만 참조 가능, 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향 양방향이라는 것은 없고 이해하기 쉽게 하기 위해 만든 용어, 참조 입장에서 보면 단방향 2개로 구성되어있다. 연관관계의 주인 테이블은 외래키 하나로 두 테이블이 연관관계를 맺는다. 객체 양방향 관계는 A->B, B->A 처럼 .. 2021. 8. 23.