'1-1'에 해당되는 글 1건

  1. 2008.02.13 1-1 연관 매핑

1-1 연관 매핑

Hibernate 2008.02.13 00:35
참고 : 래퍼런스 7장

리스트로 보여줄 필드가 존재하는 Article 클래스와 해당 Article을 선택 했을 때 보여줄 ArticleDetail 클래스를 나눠서 3가지 방법으로 1-1 연관을 맺어 보겠습니다.

참조키를 이용한 매핑
아래 설정은 참조키를 이용한 단방향으로써 부모(Article)측에만 연관 설정이 되어 있습니다.
참조키를 이용한 1-1 연관일 경우 부모측에 <many-to-one /> 요소를 이용 하게 되는데 여기서 주의 사항이 있습니다. 참조키를 이용한 1-1 매핑의 경우 <many-to-one /> 요소를 이용하며 unique 속성을 true로 설정해야 한다는 것 입니다. 래퍼런스에는 unique 속성이 참조키 설정을 위한 것이며 연관 다중성을 1대1로 만들어 준다고 나와 있습니다. 즉 한개의 Article 객체는 한개의 ArticleDetail 객체와 연관 된다는 뜻 입니다.

위 설정은 단방향이며 양방향 매핑의 경우 ArticleDetail 매핑을 아래와 같이 변경 합니다.
아래 설정을 보면 <one-to-one /> 요소가 추가된 것을 볼 수 있습니다. 그런데 proeprty-ref 속성이 등장 했군요. 래퍼런스에는 이 클래스의 주키에 연결된 연관 클래스의 프로퍼티 이름을 지정한다고 나와 있습니다. 즉 이 클래스(ArticleDetail) 의 주키(id)에 연결된 연관 클래스(Ariticle)의 프로퍼티(detail)를 지정한다는 뜻 입니다.

하나의 주키를 이용한 매핑
아래 설정은 하나의 주키를 공유하는 단방향으로써 ArticleDetail 측에만 연관 설정이 되어 있습니다.
세가지 포인트가 있습니다.
1. 주키를 부모의 키와 공용하기 위해 foreign을 사용
2. <one-to-one /> 요소의 constrained 속성을 true로 설정
3. 연관의 방향이 반대로 역전
ArticleDetail 의 주키는 연관된 클래스에 대한 참조키 이므로 constrained 속성을 true로 설정 했습니다.
그리고 연관의 방향이 반대로 역전되어 있는데 이 경우 작업을 ArticleDetail 객체로 해야 하기 때문에 현재 상황에서는 단방향 매핑이 의미가 없습니다.

양방향 매핑을 위해 Artciel 매핑을 아래와 같이 변경 합니다.
양방향 매핑의 경우 자바코드내의 양방향 링크가 필수 입니다.

조인 테이블을 이용한 매핑
아래 설정은 조인테이블을 이용한 단방향으로써 부모(Article)측에만 연관 설정이 되어 있습니다.
<join /> 요소와 <key /> 요소를 이용한것을 빼고는 참조키를 이용한 매핑의 경우와 동일 합니다.
optional 속성을 true로 설명하면 조인 테이블의 프로퍼티들이 null이 아닐 경우 insert를 하게 됩니다.

위 설정은 단방향이며 양방향 매핑의 경우 ArticleDetail 매핑을 아래와 같이 변경 합니다.
양방향 매핑의 경우 한 쪽 끝임을 알리기위해  inverse 를 true로 설정해야 합니다.
신고

'Hibernate' 카테고리의 다른 글

1-n 연관 매핑(컬렉션 매핑), inverse 속성  (0) 2008.02.17
n-1 연관 매핑  (0) 2008.02.17
1-1 연관 매핑  (0) 2008.02.13
Value 타입 매핑  (0) 2008.02.06
Entity type vs Value type  (1) 2008.02.05
Hibernate에서 HSQL 사용과 스키마 자동 생성  (0) 2008.02.05
Posted by 째코


티스토리 툴바