WEB开发网
开发学院软件开发Java 使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部... 阅读

使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承

 2010-04-19 00:00:00 来源:WEB开发网   
核心提示: SINGLE_TABLEstrategy 设置为 SINGLE_TABLE 选项表示所有类及其子类保存在同一个数据库表中,对象的类型使用表中的特殊字段 DTYPE 进行识别,使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承(5),TABLE_PER_CLA

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, 继承关系的父类

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Apache OpenJPA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接