JPA기본편6 영속성 전이와 고아객체 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 or 연관된 엔티티도 함께 영속상태로 만들고 싶을 때, 엔티티를 영속화 할 때 연관된 엔티티도 함께 영속화 하는 기능을 제공한다! [ parent ] - [ child : CASCADE ] 반드시 하나의 Parent 엔티티만 Child 엔티티 를 관리할 때 [ 단일 관리자 ] 에만 영속성 전이를 사용한다. 고아 객체 삭제 orphanRemoval = true CascadeType.ALL 두 옵션을 모두 활성화 하면 Parent 엔티티를 통해서 자식의 생명주기까지 관리가 가능하다. 부모 엔티티와 연관관계가 끊어진 자식 엔티티 자동 제거 2021. 9. 13. 프록시(Proxy) 프록시 조회 엔티티의 조회 // em.find(XXX.class, "id"); 프록시 조회 // em.getReference(XXX.class, "id"); 프록시 객체의 초기화 getReference 를 통해 특정 객체의 프록시를 호출한다. 프록시 객체의 참조(Target Id) 가 비어있기 때문에 영속성 컨텍스트에 초기화 요청을 한다. 실제 DB 에서 특정 객체 DB를 조회하여 실제 엔티티를 생성한다. 프록시 객체의 참조(Target Id) 와 실제 엔티티를 연결한다. # 프록시 강제 초기화 : org.hibernate.Hibernate.initialize(entity); 이 때, 프록시 객체의 메소드를 호출하면 참조에 연결된 특정 객체의 메소드를 반환한다. 프록시의 특징 프록시 객체는 실제 객체의 .. 2021. 9. 9. 상속관계의 매핑 RDB 의 상속관계 관계형 DB는 상속관계 개념이 없으며 대신 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. RDB 의 상속관계를 물리 모델로 구현하는 방법 @Inheritance(strategy=InheritanceType.XXX) 각각 테이블로 변환 -> 조인 전략 [JOINED] 슈퍼타입의 속성을 서브타입들이 상속받고 각자의 속성을 가지고 있는다. # 장점 - 테이블 정규화 - 외래키 참조 무결성 제약조건 활용가능 : 슈퍼타입의 PK를 통해서 모두 조회 가능하다. - 저장 공간이 효율적이다 // 정규화 덕분 # 단점 - 조회시 많은 조인을 사용하여 쿼리가 복잡 통합 테이블로 변환 -> 단일 테이블 전략 [SINGLE_TABLE] # 장점 - 통합 테이블을 사용해서 조인이 필요없고.. 2021. 9. 8. 연관관계 매핑 - 데이터 중심 설계의 문제점 데이터 중심으로 JPA를 설계하게 된다면, 객체 설계를 테이블 설계에 맞춘 방식 테이블의 외래키를 객체에 그대로 가져옴 ex ] private Long memberId; 객체 그래프 탐색이 불가능 [끊긴다]. 참조가 없으므로 UML도 잘못된다. 따라서 객체를 DB에 맞춰 설계하는 것을 연관관계 매핑을 통해 해결한다. ' 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다 ' 객체를 테이블에 맞춰 데이터 중심으로 모델링하게 된다면, 객체간의 협력 관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해 연관 테이블을 찾는다. 객체는 참조를 사용해서 연관 객체를 찾는다. 양방향 연관관계와 연관관계의 주인 양방향 매핑 규칙 - 객체의 두 관계중 하나를 연관관계의.. 2021. 9. 4. 이전 1 2 다음