사용자 도구

사이트 도구


java:jpa:one-to-one

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:jpa:one-to-one [2015/03/09 21:22]
kwon37xi [One-To-One 과 Lazy Loading]
java:jpa:one-to-one [2018/06/29 08:41] (현재)
kwon37xi [게시판 형태에서 게시글에 대해 One-To-One LazyLoading 구현]
줄 6: 줄 6:
 ===== Primary Key 기반 One-To-One JPA 2 방식 ===== ===== Primary Key 기반 One-To-One JPA 2 방식 =====
   * **[[http://docs.oracle.com/javaee/6/api/javax/persistence/MapsId.html|@MapsId]]**를 사용하라.   * **[[http://docs.oracle.com/javaee/6/api/javax/persistence/MapsId.html|@MapsId]]**를 사용하라.
 +  * ''MapsId''는 기본적으로 Composite Primary Key(Embeddable)의 일부만 관계에서 사용될때 ''value''에서 해당 property를 명시한다. 명시하지 않으면 전체 사용.
   * Hibernate에서 ''@MapsId''로 OneToOne 매핑시에 자식측에 ''@JoinColumn''이 필요하다.<code java>   * Hibernate에서 ''@MapsId''로 OneToOne 매핑시에 자식측에 ''@JoinColumn''이 필요하다.<code java>
 @Entity @Entity
줄 59: 줄 60:
     - 만약 null 값이 가능한 OneToOne 에 프록시 객체를 넣는다면, 이미 그 순간 결코 null 이 아닌 프록시 객체를 리턴하는 상태가 돼 버리기 때문이다.     - 만약 null 값이 가능한 OneToOne 에 프록시 객체를 넣는다면, 이미 그 순간 결코 null 이 아닌 프록시 객체를 리턴하는 상태가 돼 버리기 때문이다.
     - 따라서 JPA 구현체는 기본적으로 One-To-One 관계에 Lazy 를 허용하지 않고, 즉시 값을 읽어 들인다.     - 따라서 JPA 구현체는 기본적으로 One-To-One 관계에 Lazy 를 허용하지 않고, 즉시 값을 읽어 들인다.
 +  * [[java:hibernate:lazy_to_one|@LazyToOne]] 참조
   * 참조   * 참조
     * [[http://community.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one|Some explanations on lazy loading (one-to-one) | Hibernate | JBoss Community]]     * [[http://community.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one|Some explanations on lazy loading (one-to-one) | Hibernate | JBoss Community]]
줄 74: 줄 76:
  
 ===== 게시판 형태에서 게시글에 대해 @ElementCollection을 사용한 LazyLoading 구현 ===== ===== 게시판 형태에서 게시글에 대해 @ElementCollection을 사용한 LazyLoading 구현 =====
 +  * Deprecated. see [[java:hibernate:lazy_to_one|@LazyToOne]]
   * 기본적으로 One-To-One의 LazyLoading이 난잡하므로 @ElementCollection에 Lazy를 이용하되, **컬렉션에 Unique 조건을 주므로써 딱 1개의 데이터만 들어갈 수 있도**록 처리한다.   * 기본적으로 One-To-One의 LazyLoading이 난잡하므로 @ElementCollection에 Lazy를 이용하되, **컬렉션에 Unique 조건을 주므로써 딱 1개의 데이터만 들어갈 수 있도**록 처리한다.
 <code java> <code java>
줄 107: 줄 110:
  
 ===== 게시판 형태에서 게시글에 대해 One-To-One LazyLoading 구현 ===== ===== 게시판 형태에서 게시글에 대해 One-To-One LazyLoading 구현 =====
 +  * Deprecated. see [[java:hibernate:lazy_to_one|@LazyToOne]]
   * ElementCollection 방식 추천.   * ElementCollection 방식 추천.
   * 게시판처럼 내용이 있지만, 목록에서는 내용을 보여주지 않는 경우 JPA 에서 내용 컬럼에 LazyLoading을 적용해도 현재의 JPA 구현체들이 필드 LazyLoading을 구현하지 못해서 결국 제목의 목록만 필요할 때도 내용까지 읽어들인다.   * 게시판처럼 내용이 있지만, 목록에서는 내용을 보여주지 않는 경우 JPA 에서 내용 컬럼에 LazyLoading을 적용해도 현재의 JPA 구현체들이 필드 LazyLoading을 구현하지 못해서 결국 제목의 목록만 필요할 때도 내용까지 읽어들인다.
java/jpa/one-to-one.1425903745.txt.gz · 마지막으로 수정됨: 2015/03/09 21:22 저자 kwon37xi