使用 Apache OpenJPA 开发 EJB 3.0 应用,第 3 部分: 实体继承
2010-04-19 00:00:00 来源:WEB开发网从这个简单的例子中我们就可以看出,一个企业应用开发者使用 Java 实现企业应用时需要同时掌握面向对象和关系型数据库的两种思想,而且还必须保证它们之间的映射是正确的,否则无法保证企业应用的正确性,这对于企业应用开发者是个的挑战,因此 Java 社区一直在寻求如何将面向对象和关系型数据库思想统一起来的简单途径,这方面的努力促进了持久化技术的发展。
OpenJPA 是最新的尝试,它能够将对象继承关系的持久化透明化,企业应用开发者仅需要处理对象模型,而不需要处理和关系型数据库有关的内容,极大地降低了对象继承关系持久化的难度。下面我们来了解 OpenJPA 中持久化对象继承关系的几种方式。
持久化对象继承关系的方式
我们从关系数据库角度看对象继承关系的持久化这个问题域:对象继承通常意味着子类比父类提供更多的属性,持久化对象继承关系的实质就是如何根据对象的类型动态的处理这些多出来的属性。OpenJPA 框架支持使用三种不同的策略处理对象继承关系:
1. 类及其子类保存在一张数据库表中
在这种情况下,类及其子类都保存在同一张数据表中,该表提供足够的字段保存类及其子类的所有属性,同时提供一个特别字段保存当前记录对应类的实际类名(默认名 DTYPE,也可以在开发时指定其它名称)。在企业应用运行过程中,OpenJPA 框架根据 Java 对象的实际类型和数据库表进行绑定。
以上一章节中提到的对象模型为例: Animal、Fish、Dog 三个类的所有对象实例都被保存在 Animal 数据表中,该表将会有 5 个属性,其中 ID,NAME 字段对应 ANIMAL 类的两个属性,ID、NAME、SEX 对应 Dog 类的属性,ID、NAME、STERRITORY 对应 Fish 类的属性。DTYPE 是 OpenJPA 加入的字段,用于确定当前记录的实际类类型,在这里例子中,它的内容是“ANIMAL”、“FISH”或者是“DOG”。
- ››使用linux中的quota教程
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››使用jxl生成带动态折线图的excel
- ››apache rewrite将指定URL转向指定的几个服务器
- ››使用mysql mysqldump进行数据库迁移
- ››使用jquery是新tab形式
- ››使用QUnit进行Javascript单元测试
- ››使用UITextFieldDelegate来隐藏键盘
- ››使用公式提取Excel中的日期后发现格式不对
- ››使用SQL Azure 的BI 解决方案
- ››使用PLSQL Developer工具导出sql文件
- ››使用双缓冲技术实现Android画板应用
更多精彩
赞助商链接