持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践
2010-04-02 00:00:00 来源:WEB开发网核心提示: 本文分为两部分,第 1 部分讨论以下方面的一些基本概念:实现领域中的通用功能减少数据访问层中的代码重复按照一致的方式处理对实体修改的审计第 2 部分 更深入地讨论这里介绍的一些概念,持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践(2),还要讨论领域模型中的性能调优, 从基础开始:
本文分为两部分。第 1 部分讨论以下方面的一些基本概念:
实现领域中的通用功能
减少数据访问层中的代码重复
按照一致的方式处理对实体修改的审计
第 2 部分 更深入地讨论这里介绍的一些概念,还要讨论领域模型中的性能调优。
从基础开始:对象模型
定义一个支持持久化对象的对象模型的过程与定义任何对象模型相同。首先,寻找所有对象共享的通用元素。持久化信息中有两个通用元素:惟一地标识持久化对象的方法(应该能够跨应用程序的各次执行标识对象),以及关于对象实例的审计信息。图 1 说明如何用接口和基类定义这两个概念:
图 1. 通用的接口和基类
图 1 引入了 Identifiable 和 Auditable 接口,这些接口定义的 API 用来标识对象实例和设置对象实例的审计信息。还引入了 BaseEntity 和 AuditableEntity 基类,可以根据是否需要对象的审计信息,分别从这些基类派生出具体的持久化类。
通过用这些接口定义持久化对象,就可能创建出可以应用于所有具体对象类型的抽象行为。这包括 UI 层(用来标识要执行创建、读取、更新和删除(CRUD)操作的对象)以及服务和数据层。本文的代码示例(在 下载 中可以获得完整的代码包)演示如何使用这些接口帮助执行审计和减少数据访问对象(DAO)中的代码重复。
通用的基实体
与对象不同,数据库表没有继承的概念。许多表中都有的字段(比如审计字段)必须为每个表重新定义。请牢记,可以在 Java™ 代码中使用继承,以避免这种重复出现在代码中。尽管 ORM 工具早就支持这个特性,但是 Java Persistence API 注解使之大大简化了,可以进一步减少代码重复。
更多精彩
赞助商链接