使用JPA和Hibernate实现组合键 - 编程入门网
使用JPA和Hibernate实现组合键时间:2011-01-28 IBM Stephen B. Morris问题定义 本技巧从问题的简单的描述开始:定义组合数据库键。这个键组合了多列,唯一地定义一个数据库表的行。有时,组合键也称为自然键 或业务键。某些时候使用组合键的原因是所选键在某些方面与最终用户的业务领域相关联。要定义组合键,只需从该领域中选择一些属性,并将其组合在一起,提供所需的行唯一性程度。组合键的缺点是设计和编码略有难度。此外,组合键倾向于将您的数据库和 ORM 设计绑定到原始领域。后者可能会成为严重的问题。 实体代码 清单 1 展示了一个名为 BillingAddress 的 Java 类。该类建模一名个人或一个组织的账单邮寄地址。账单本身与另一个名为 PurchaseOrder 的 Java 类关联。这里并没有什么出人意料之处 — 下置购买订单,接下来进行账单邮寄流程。 清单 1. BillingAddress 类
这里有必要说明一个要点,该类实现了 Java Serializable 接口。另外还要注意带有注释 @Embeddable 的一行。此注释是组合键拼图中的第一块。带有 @Embeddable 注释的 Java 类本身可作为其他类的子组件。这听起来似乎有点复杂,而实际并非如此。作为演示,清单 2 展示了 PurchaseOrder 类,它使用清单 1 中的 BillingAddress 类。 使用JPA和Hibernate实现组合键(2)时间:2011-01-28 IBM Stephen B. Morris清单 2. PurchaseOrder 类
注释总是有些难以理解,清单 2 也不例外。因此,我会将其拆分成便于管理的块。第一个注释是 @Entity,指明该类是一个数据库实体(也就是说,它将构成 ORM 解决方案的一部分)。通常,看到 @Entity 注释就等于看到了对应的数据库表。后者由清单 2 中名为 @Table 的相应注释表明。我发现,以这种方式拆分程序更容易理解。 清单 2 中的下一个注释是 @IdClass,它定义组合键类引用。您可能已经注意到了,该类引用清单 1 中的 BillingAddress 类 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |