2012-12-05 2 views

답변

8

@OneToOne은 일대일 관계와 관련된 두 개의 DB 테이블을 매핑하기위한 것입니다. 예를 들어 고객은 항상 이름 테이블에 하나의 레코드를 가질 수 있습니다.

또는 이름 필드가 별도의 테이블이 아닌 고객 테이블에 있으면 @embedded가 필요할 수 있습니다. 그것의 얼굴에 당신은 표준 속성으로 고객 엔티티에 이름 필드를 추가 할 수 있습니다. 그러나 동일한 열이 여러 테이블에 나타나면 유용 할 수 있습니다 (예를 들어 공급자 테이블에 이름 열이있을 수 있음). 일차 키 필드가 임베드 클래스 정의

@Entity 
public class Project { 
    @EmbeddedId ProjectId id; 
    : 
} 

@Embeddable 
Class ProjectId { 
    int departmentId; 
    long projectId; 
} 

:

7

구성과 집계의 차이점은 무엇입니까? @ 삽입 된 객체는 항상 부모의 라이프 사이클 내에서 관리됩니다. 부모가 업데이트되거나 삭제되면 업데이트되거나 삭제됩니다. @OneToOne 객체 은 @Join 주석의 cascadeType 옵션을 통해 구성을 모방하지만, 기본적으로 그것들은 모여 있습니다. 즉, 라이프 사이클은 부모 객체의 라이프 사이클과 별개입니다.

1

@Embedded은 임베디드 클래스로 복합 기본 키를 나타내는 데 일반적이다. 엔티티는 @EmbeddedId로 주석 처리되고 그 embeddable 클래스의 인스턴스를 포함하는 단일 기본 키 필드를 포함합니다. 이 양식을 사용할 때 임베드 가능 클래스 자체가 완전한 기본 키 값을 나타낼 수 있으므로 별도의 ID 클래스가 정의되지 않습니다.

@OneToOne은 일대일 관계와 관련된 두 개의 DB 테이블을 매핑하기위한 것입니다. @Id가 기본 키가됩니다.

2

@Embedded은 값 객체 (객체에 첨부 할 때만 의미가있는 객체)와 함께 사용되지만 일대일 매핑은 자체 존재와 의미가있는 두 객체 사이에 있습니다.

예 :

값 개체 및 @Embedded : User 클래스가 있고이 클래스에 주소 개체가있는 경우 주소 개체는 사용자와 연결될 때까지 아무런 의미가 없으므로 값 개체로 간주 될 수 있습니다. 여기서 주소 객체는 @Embedded으로 주석을 달 수 있습니다.

일대일 매핑 및 @OneToOne : User 클래스가 있고이 클래스에 'Father'Object 또는 'Mother'객체가있는 경우 'Father'또는 'Mother'인스턴스에 @ '아버지'또는 '어머니'인 OneToOne은 고유 한 의미와 존재를 가지며 사용자 클래스에 대한 값 객체가 아닙니다.

@OneToMany와 @ElementCollection 사이에 밀접한 관련이 있습니다. 둘 다 Java 클래스에서 Collection 유형의 인스턴스 변수를 저장하는 데 사용됩니다. 차이점은, @ElementCollection은 저장되는 Collection의 요소가 Value Object 인 반면 @OneToMany는 elments와 object가 의미와 존재를 잘 정의 할 때 사용됩니다.

관련 문제