使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承
2010-04-19 00:00:00 来源:WEB开发网核心提示: 以上一章节中提到的对象模型为例: Animal、Fish、Dog 三个类的对象实例都被在 Animal 表中有记录;而 Fish 对象的 TERRITORY 属性者被 FISH 表所保存,FISH 表通过 ID 和 Animal 表中的数据进行关联;而 Dog 对象的 SEX 属性者被 Dog
以上一章节中提到的对象模型为例: Animal、Fish、Dog 三个类的对象实例都被在 Animal 表中有记录;而 Fish 对象的 TERRITORY 属性者被 FISH 表所保存,FISH 表通过 ID 和 Animal 表中的数据进行关联;而 Dog 对象的 SEX 属性者被 Dog 表所保存,Dog 表通过 ID 和 Animal 表中的数据进行关联。下面这个图显示了这种情况下对象继承关系数据库中的表现。
图 4. 第三种策略的数据库表现
查看原图(大图)
这三种方式的处理对于开发者而言是透明的,无论选择哪一种,仅仅影响数据在关系数据库中的保存方式,对于开发者而言,只需要按照面向对象的方式操作对象既可,OpenJPA 框架在处理持久化操作的时候,会动态地判断当前对象的实际类类型(后期绑定),从而确定持久化到哪个表中。在一个企业应用的实现中,开发者可以根据需要选择这三种方式的一种或者几种来处理对象之间的继承关系。
Inheritance 注释
OpenJPA 是一个基于注释的持久化框架,对持久化的大多数元信息都只需要为实体类提供相应的注释。开发者使用注释描述实体和数据库表之间的映射,也采用注释描述对象继承关系的持久化。javax.persistence.Inheritance 注释用来指定对象继承关系持久化的方式。它的 strategy 属性用于指定持久化对象继承关系在关系数据库中的表现形式,可选择项包括 SINGLE_TABLE、JOINED 和 TABLE_PER_CLASS。它们三个都是 javax.persistence.InheritanceType 中定义的常量。
- ››使用linux中的quota教程
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››使用jxl生成带动态折线图的excel
- ››apache rewrite将指定URL转向指定的几个服务器
- ››使用mysql mysqldump进行数据库迁移
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
- ››使用双缓冲技术实现Android画板应用
更多精彩
赞助商链接