通过模板做网站,门户网站静态页面,海外医疗网站建设,六安招聘网官网jpa embedded介绍#xff1a; 作为一个面向对象的开发人员#xff0c;我们希望避免使用带有大量不相关字段的大型类。 因此#xff0c;我们可能经常感到有必要使用多个对象来表示JPA实体。 在本快速教程中#xff0c;我们将学习如何使用JPA或Hibernate中的Embedded和Embed… jpa embedded 介绍 作为一个面向对象的开发人员我们希望避免使用带有大量不相关字段的大型类。 因此我们可能经常感到有必要使用多个对象来表示JPA实体。 在本快速教程中我们将学习如何使用JPA或Hibernate中的Embedded和Embeddable注释来实现它。 上下文构建 假设我们有一个人桌 具有以下列 id|firstName|middleName|lastName|street|city|country|pincode 我们希望将其映射为JPA实体。 在我们的实体类中直接映射这么多属性对于我们开发人员的本能并不那么自然。 同样更改数据库表结构也不可行。 我们做什么 首先定义一个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 ... } 我们已经使用Embeddable批注标记了这两者以表示它们将被嵌入到JPA实体中。 最后我们将使用Embedded注释嵌入特定类型。 让我们定义将代表我们的人员表的人员实体 Entity public class Person { Id GeneratedValue private Integer id; Embedded private PersonName name; Embedded private Address address; //constructor, getters, setters ... } 我们在这里使用Embedded批注来表示这些对象将被嵌入到我们的实体中。 换句话说 所有这些对象将一起映射到一个人数据库表。 覆盖属性 当我们有多个实体使用可嵌入对象时它们通常特别方便。 现在说我们还有另一个表– office id|streetAddr|city|country|postcode|... office表还具有一个Address类型只是几个字段名称有所不同。 同样在这里我们可以使用相同的Address可嵌入对象。 这个想法是使用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; ... } 这种方法更加简洁使我们避免在多个实体中重复使用名称不同的重复字段。 相反我们可以覆盖可嵌入类型的任何列属性。 结论 在本教程中我们探讨了JPA Emdeddable和Embedded注解。 成为第一个发表评论的人。 翻译自: https://www.javacodegeeks.com/2020/01/jpa-embeddable-and-embedded.htmljpa embedded