首頁 > Java > java教程 > 主體

如何使用註解定義 Hibernate 和 Spring 中的關係?

Patricia Arquette
發布: 2024-11-03 09:10:03
原創
730 人瀏覽過

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>
登入後複製

一-多對多關係

使用使用者管理連接表的單向:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!