使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承
2010-04-19 00:00:00 来源:WEB开发网SINGLE_TABLE
strategy 设置为 SINGLE_TABLE 选项表示所有类及其子类保存在同一个数据库表中,对象的类型使用表中的特殊字段 DTYPE 进行识别。
TABLE_PER_CLASS
strategy 设置为该选项表示每个类使用一个表。
JOINED
strategy 设置为该选项表示父类和子类分别保存在不同的数据库表中,子类中不保存父类对应数据库表中已有的属性,仅通过主键进行关联。
javax.persistence.Inheritance 注释是类级别的注释。需要为每一个成为父类的实体类提供 javax.persistence.Inheritance 注释并且指定 strategy 属性。在同一个企业应用中,开发者可以根据实际情况选择这三种策略中的一种,或者是几种同时使用。
对象继承关系的持久化和查询
上面的章节中,我们已经介绍了 OpenJPA 中处理对象继承的方法,下面我们通过一些简短的代码来演示如何实现 Animal、Fish、Dog 及其继承关系的持久化,同时介绍如何将这种对象继承关系从数据库中还原出来。
演示中,我们选择使用实现第三种方式:JOINED。这也是 OpenJPA 中持久化对象继承的最佳实践,既符合 Java 开发者面向对象的习惯,也能够符合关系数据库设计的范式要求,而且数据库中的数据冗余最小。TABLE_PER_CLASS 和 SINGLE_TABLE 方式下的对象继承关系持久化的例子请读者参考下面的步骤自己完成。
实体类 Animal
首先我们创建实体类 Animal,它是 Fish 和 Dog 的父类。因此必须为它处理提供 javax.persistence.Inheritance 注释。我们选择使用 JOINED 策略处理继承关系,因此设置 javax.persistence.Inheritance 注释的 strategy 属性为 InheritanceType.JOINED。
清单 1 Animal.java, 继承关系的父类
- ››使用linux中的quota教程
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››使用jxl生成带动态折线图的excel
- ››apache rewrite将指定URL转向指定的几个服务器
- ››使用mysql mysqldump进行数据库迁移
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
- ››使用双缓冲技术实现Android画板应用
更多精彩
赞助商链接