단방향 관계를 생성하려면 -대일 관계인 경우 소유 클래스에 @OneToOne 주석을 사용합니다. 종속 클래스의 테이블에서 외래 키를 보유할 열의 이름을 지정하도록 @JoinColumn 주석을 구성합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToOne private Bar bar; } public class Bar { private Long barId; // No corresponding mapping to Foo.class }</code>
양방향 일대일 관계의 경우 두 클래스 모두 @OneToOne으로 주석을 답니다. 소유 클래스의 @JoinColumn 주석을 사용하여 외래 키 열 이름을 지정합니다. 종속 클래스에서 @JoinColumn 주석을 사용하여 외래 키를 소유 클래스에 다시 매핑합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "barId") private Bar bar; } public class Bar { private Long barId; @OneToOne(mappedBy = "bar") private Foo foo; }</code>
사용자 관리형 조인 테이블을 사용하는 단방향 일대다 관계의 경우 두 클래스 간의 관계를 매핑하는 조인 테이블 클래스를 생성합니다. @Entity 및 @Table로 조인 테이블에 주석을 달고 열을 상위 및 하위 클래스의 기본 키에 매핑합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToMany @JoinTable(name="FOO_BAR", joinColumns = @JoinColumn(name="fooId"), inverseJoinColumns = @JoinColumn(name="barId")) private List<Bar> bars; } public class Bar { private Long barId; // No mapping specified here. } @Entity @Table(name="FOO_BAR") public class FooBar { private UUID fooBarId; @ManyToOne @JoinColumn(name = "fooId") private Foo foo; @ManyToOne @JoinColumn(name = "barId") private Bar bar; // You can store other objects/fields on this table here. }</code>
외래 키 매핑을 사용한 양방향 일대다 관계의 경우 소유 클래스에 @OneToMany 주석을 달고 종속 클래스에 @ManyToOne 주석을 답니다. @JoinColumn 주석을 사용하여 종속 클래스 테이블의 외래 키를 보유할 열 이름을 지정합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToMany(mappedBy = "bar") private List<Bar> bars; } public class Bar { private Long barId; @ManyToOne @JoinColumn(name = "fooId") private Foo foo; }</code>
Hibernate 관리형 조인 테이블을 사용하는 양방향 다대다 관계의 경우 각 클래스에 @OneToMany 주석을 답니다. 두 클래스 간의 관계를 매핑하는 조인 테이블 클래스를 만듭니다. @Entity 및 @Table로 조인 테이블에 주석을 달고 열을 상위 및 하위 클래스의 기본 키에 매핑합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToMany @JoinTable(name="FOO_BAR", joinColumns = @JoinColumn(name="fooId"), inverseJoinColumns = @JoinColumn(name="barId")) private List<Bar> bars; } public class Bar { private Long barId; @OneToMany @JoinTable(name="FOO_BAR", joinColumns = @JoinColumn(name="barId"), inverseJoinColumns = @JoinColumn(name="fooId")) private List<Foo> foos; }</code>
사용자 관리 조인 테이블 개체를 사용하는 양방향 다대다 관계의 경우 두 클래스 간의 관계를 매핑하는 조인 테이블 클래스를 생성합니다. @Entity 및 @Table을 사용하여 조인 테이블에 주석을 달고 열을 상위 및 하위 클래스의 기본 키에 매핑합니다. @OneToMany로 각 클래스에 주석을 달고 필드를 조인 테이블 클래스에 매핑합니다.
예:
<code class="java">public class Foo { private Long fooId; @OneToMany(mappedBy = "bar") private List<FooBar> bars; } public class Bar { private Long barId; @OneToMany(mappedBy = "foo") private List<FooBar> foos; } @Entity @Table(name="FOO_BAR") public class FooBar { private UUID fooBarId; @ManyToOne @JoinColumn(name = "fooId") private Foo foo; @ManyToOne @JoinColumn(name = "barId") private Bar bar; // You can store other objects/fields on this table here. }</code>
Hibernate는 작업을 양방향 또는 양방향으로 계단식으로 배열할 수 있습니다. 양방향 관계에서. 소유 클래스에 @OneToMany 주석을 표시하여 원하는 방향으로 계단식 변경합니다. 일반적으로 관계의 소유 측에 계단식 표시를 표시하는 것이 좋습니다.
고아 제거를 통해 더 이상 상위 개체와 연결되지 않은 고아 개체가 데이터베이스에서 자동으로 삭제됩니다. @OneToMany 주석에서 orphanRemoval = true를 설정하여 고아 제거를 활성화합니다.
LazyInitializationException은 컬렉션이 초기화되기 전에 느리게 가져온 컬렉션이 포함된 엔터티에 액세스할 때 발생합니다. 이 문제를 해결하려면 Hibernate.initialize()를 사용하여 명시적으로 컬렉션을 초기화하거나 @OneToMany 주석에서 fetchType = FetchMode.EAGER를 사용하여 컬렉션을 즉시 로드하세요.
위 내용은 주석을 사용하여 Hibernate 4와 Spring의 엔터티 간의 관계를 어떻게 정의합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!