>  기사  >  Java  >  주석을 사용하여 Hibernate와 Spring에서 관계를 어떻게 정의할 수 있습니까?

주석을 사용하여 Hibernate와 Spring에서 관계를 어떻게 정의할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 09:10:03730검색

How Can You Define Relationships in Hibernate and Spring Using Annotations?

주석을 사용하여 Hibernate 4 및 Spring에서 관계 정의

단방향 및 양방향 관계

일대일 관계

단방향:

<code class="java">class Foo {
    private Bar bar;
}

class Bar {
}</code>

양방향(Foo 클래스에서 관리):

<code class="java">class Foo {
    @OneToOne(cascade = CascadeType.ALL)
    private Bar bar;
}

class Bar {
    @OneToOne(mappedBy = "bar")
    private Foo foo;
}</code>

One- 대다 관계

사용자 관리 조인 테이블을 사용한 단방향:

<code class="java">class Foo {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "fooId")},
        inverseJoinColumns = {@JoinColumn(name = "barId")})
    private List<Bar> bars;
}

class Bar {
    // No corresponding mapping to Foo.class
}

@Entity
@Table(name = "FOO_BAR")
class FooBar {
    private UUID fooBarId;
    private Foo foo;
    private Bar bar;
}</code>

외래 키 매핑을 사용한 양방향:

<code class="java">class Foo {
    @OneToMany(mappedBy = "bar")
    private List<Bar> bars;
}

class Bar {
    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;
}</code>

다대다 관계

Hibernate 관리 조인 테이블을 사용한 양방향:

<code class="java">class Foo {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "fooId")},
        inverseJoinColumns = {@JoinColumn(name = "barId")})
    private List<Bar> bars;
}

class Bar {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "barId")},
        inverseJoinColumns = {@JoinColumn(name = "fooId")})
    private List<Foo> foos;
}</code>

양방향을 사용한 양방향 사용자 관리 조인 테이블:

<code class="java">class Foo {
    @OneToMany(mappedBy = "bar")
    private List<FooBar> bars;
}

class Bar {
    @OneToMany(mappedBy = "foo")
    private List<FooBar> foos;
}

@Entity
@Table(name = "FOO_BAR")
class FooBar {
    private UUID fooBarId;
    private Foo foo;
    private Bar bar;
}</code>

관계 소유권 결정

  • 일반적으로 컬렉션이 있는 개체가 관계를 소유합니다.

선택 FetchType

  • 기본값: LAZY
  • 자주 사용되는 컬렉션에는 EAGER를 사용합니다.
  • 느리게 로드되는 컬렉션이 필요한 경우 Hibernate.initialize() 또는 FetchMode.SUBSELECT 사용을 고려하세요.

계단식 방향 결정

  • 지정되지 않는 한 계단식 작업은 한 방향으로만 진행됩니다.
  • 계단식 작업에 @OneToMany 주석을 표시합니다. 관계의 소유 측.

고아 제거

  • OrphanRemoval = true: 다른 관계에서 더 이상 참조되지 않는 고아 개체를 제거합니다.

위 내용은 주석을 사용하여 Hibernate와 Spring에서 관계를 어떻게 정의할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.