본문 바로가기

분류 전체보기28

프록시와 연관관계 관리 - 11 프록시 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 지연 로딩이라 한다. 지연 로딩 기능을 사용할 때 실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라고 한다. 프록시 기초 엔티티를 실제 사용하고 싶은 지점까지 미루고 싶을 때, EntityManager.getReference(Class entityClass, Object primaryKey)를 사용하면 된다. 프록시 객체에 member.getName()을 호출해서 실제 데이터를 조회한다. 프록시 객체는 실제 엔티티가 생성되어 있지 않으면 영속성 컨텍스트에 실제 엔티티 생성을 요청하는데 이것을 초기화라 한다. 영속성 컨텍스트는 데이터베이스를 조회해서 실제 엔티티 객체를 생성한다. 프록.. 2021. 7. 13.
고급 매핑 - 10 상속 관계 매핑 - 조인 전략 엔티티 각각 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 ※ 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없으므로 타입을 구분하는 컬럼을 추가해야 한다. 조인 전략 매핑 @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "TYPE") public abstract class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String price; } @Entit.. 2021. 7. 12.
다양한 연관관계 매핑 - 9 다대일 다대일 단방향(N:1) @Entity public class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") private Team team; } 다대일 양방향(N:1, 1:N) 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 항상 다(N)에 외래 키가 있다. -> 다 쪽이 주인 양방향 연관관계는 항상 서로를 참조해야 한다. 일대다 일대다 단방향(1:N) 일대다 단방향 매핑의 단점은 매핑한 객체가 관리하는 외래 키가 다른 테이블에 있다는 점이다. 즉, 본인 테이블에 외래 키가 있으면 엔티티의 저장과 연관관계 처리를 insert SQL 한 번으로 끝낼 수 있지만, 다른 테이블에 있으면 연관.. 2021. 7. 9.
연관관계 매핑 기초 - 8 단방향 연관관계 더보기 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. 객체 연관관계 - 회원 객체와 팀 객체는 단방향 관계 테이블 연관관계 - 회원 테이블과 팀 테이블은 양방향 관계 객체 연관관계와 테이블 연관관계의 가장 큰 차이 - 참조를 통한 연관관계는 언제나 단방향이다. - 객체간에 연관관계를 양방향으로 만들고 싶으면 반대쪽에도 필드를 추가해서 참조를 보관해야 한다. 즉, 서로 다른 단뱡향 관계 2개다. - 반면에, 테이블은 외래 키 하나로 양방향으로 조인할 수 있다. 객체 관계 매핑 회원 엔티티 @Entity public class Member { @Id @Column(name = "member_id") private String id; private S.. 2021. 7. 6.