jpa embedded_JPA @Embeddable和@Embedded
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模板网站怎么修改(模板网站怎么修改内容)
- 下一篇: jdk内置线程实例_EA问题的JDK14