快速业务通道

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
s> <id name="participantId"> <column name="PRTCPNT_TID"/> </id> ... </attributes> </entity> // SalesRep subclass <entity class="SalesRep"> <discriminator-value>SALES_REP</discriminator-value> ... </entity> // Administrator subclass <entity class="Administrator"> <discriminator-value>ADMIN</discriminator-value> ... </entity>

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(12)

时间:2011-09-18 Donald Vines

b. 连接继承

对于基础类不包含所有子类的大多数属性的情况,对于每个子类,将一个包含基础类属性的表与一个 单独的连接表一起使用。对于非继承属性,该表仅包含列。因此,阅读子类实例需要跨基础类表和子类表 进行连接。

连接继承策略的优点是您可以在子类中定义非空属性,而对应的缺点是需要多个连接才能构造实例。 此方法也是最灵活的的方法,即您可以定义新的子类,并将属性添加到现有子类,而无需修改基础类表。

对象模型

映射 4. 连接继承 (POJO)

// Participant (base) class public class Participant implements Serializable { private Long participantId; ... } // SalesRep (sub) class public class SalesRep extends Participant { ... } // Administrator (sub) class public class Administrator extends Participant { ... }

Hibernate 约定

在 Hibernate 中,连接继承按照以下方式进行映射:

在基础类中,将类元素与主键 (id) 一起使用;还要为这些属性定义映射,以建立基础类。

在子类中,将连接子类与包含基础类主键的外键列一起使用;还要在连接子类中定义其他属性的映射 (本例中不显示)。

映射 5. 连接继承(Hibernate XML 映射)

<!-- Participant (base) class --> <class name="Participant" table="T_PRTCPNT" > <id name="participantId" column="PRTCPNT_TID"/> ... </class> <!-- SalesRep joined-subclass --> <joined-subclass name="SalesRep" extends="Participant" table="T_SALESREP"> <key column="PRTCPNT_TID"/> ... </joined-subclass> <!-- Administrator joined-subclass --> <joined-subclass name="Administrator" extends="Participant" table="T_ADMIN"> <key column="PRTCPNT_TID"/> ... </joined-subclass>

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(13)

时间:2011-09-18 Donald Vines

OpenJPA 约定

在 OpenJPA 中,连接继承按照以下方式进行映射:

在基础类中,使用 JOINED 继承策略。基础类还定义所有连接子类使用的主键,并可以选择定义版本 列。还要定义基础类属性的映射。

在子类中,定义子类的持久属性;其表将包含这些属性,并包含用作外键的主键列,以连接基础类的 主键。子类不定义版本列。

映射 6. 连接继承(OpenJPA XML 映射)

<!-- Participant (base) class --> <entity class="Participant"> <table name="T_PRTCPNT"/> <inheritance strategy="JOINED"/> <attributes> <id name="participantId"> <column name="PRTCPNT_TID"/> </id> ... </attributes </entity> <!-- SalesRep subclass --> <entity

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号