日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jpa embedded_JPA @Embeddable和@Embedded

發(fā)布時(shí)間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa embedded_JPA @Embeddable和@Embedded 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

jpa embedded

介紹:

作為一個(gè)面向?qū)ο蟮拈_發(fā)人員,我們希望避免使用帶有大量不相關(guān)字段的大型類。 因此,我們可能經(jīng)常感到有必要使用多個(gè)對(duì)象來表示JPA實(shí)體。

在本快速教程中,我們將學(xué)習(xí)如何使用JPA或Hibernate中的@Embedded和@Embeddable注釋來實(shí)現(xiàn)它

上下文構(gòu)建:

假設(shè)我們有一個(gè)人桌 ? 具有以下列:

id|firstName|middleName|lastName|street|city|country|pincode

我們希望將其映射為JPA實(shí)體。

在我們的實(shí)體類中直接映射這么多屬性對(duì)于我們開發(fā)人員的本能并不那么自然。 同樣,更改數(shù)據(jù)庫表結(jié)構(gòu)也不可行。 我們做什么?

首先定義一個(gè)PersonName和Address類:

@Embeddable public class PersonName { ?private String firstName; private String middleName; private String lastName; ?//constructors, getters, setters ... } ? @Embeddable public class Address { private String street; private String city; private String country; private String pincode; ?//constructors, getters, setters ... }

我們已經(jīng)使用@Embeddable批注標(biāo)記了這兩者,以表示它們將被嵌入到JPA實(shí)體中。

最后,我們將使用@Embedded注釋嵌入特定類型。

讓我們定義將代表我們的人員表的人員實(shí)體:

@Entity public class Person { ????@Id @GeneratedValue private Integer id; ????@Embedded private PersonName name; ?@Embedded private Address address; ?//constructor, getters, setters ... }

我們?cè)谶@里使用@Embedded批注來表示這些對(duì)象將被嵌入到我們的實(shí)體中。 換句話說, 所有這些對(duì)象將一起映射到一個(gè)人數(shù)據(jù)庫表。

覆蓋屬性:

當(dāng)我們有多個(gè)實(shí)體使用可嵌入對(duì)象時(shí),它們通常特別方便。

現(xiàn)在說,我們還有另一個(gè)表– office :

id|streetAddr|city|country|postcode|...

office表還具有一個(gè)Address類型,只是幾個(gè)字段名稱有所不同。

同樣在這里,我們可以使用相同的Address可嵌入對(duì)象。 這個(gè)想法是使用@AttributeOverrides和@AttributeOverride注解覆蓋Address類的street和pincode屬性

@Entity public class Office { ????@Id @GeneratedValue private Integer id; ?@Embedded @AttributeOverrides (value = { @AttributeOverride (name = "street" , column = @Column (name = "streetAddr" )), @AttributeOverride (name = "pincode" @AttributeOverride "pincode" , column = @Column , column = (name = "postcode" )) }) private Address address; ... }

這種方法更加簡潔,使我們避免在多個(gè)實(shí)體中重復(fù)使用名稱不同的重復(fù)字段。

相反,我們可以覆蓋可嵌入類型的任何列屬性。

結(jié)論:

在本教程中,我們探討了JPA @Emdeddable和@Embedded注解。

成為第一個(gè)發(fā)表評(píng)論的人。

翻譯自: https://www.javacodegeeks.com/2020/01/jpa-embeddable-and-embedded.html

jpa embedded

總結(jié)

以上是生活随笔為你收集整理的jpa embedded_JPA @Embeddable和@Embedded的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。