现代 ORM 工具的策略与最佳实践.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
现代 ORM 工具的策略和最佳实践 简介 在过去 5 到 10 年中 ,开发人员对企业应用程序中的实体进行持久化的方式发生 根本性 变化。早期的企业应用程序使用数据库表和表之间的外键关系进行实体建模。应用程序被看作查 看和查询数据库底层模型的方式。近几年 ,数据库中的实体建模逐渐向应用程序对象模型中的实 体建模转变。现在大家已经意识到 ,数据库仅仅是存储对象结构所定义的持久化信息的一种机制 。把建模从数据库转移到对象模型中有许多优点 ,包括 : · 持久化实体与对它们执行的操作更紧密地集成 · 有助于创建松散耦合的应用程序组件 · 与关系数据库相比 ,面向对象模型支持更丰富的关系 · 更加独立于特定的数据库平台 发生这种转变的主要原因是出现 功能强大的对象 - 关系映射 (O RM )系统 ,它们支持按照 与目标语言的习惯用法一致的方式访问持久化对象。Hibernat e 和 To pLink 等工具大大简化 把 对象模型映射到关系数据库模式的过程。 自从这些工具出现以来 ,使用它们的方法也有所变化。最初 ,许多开发人员按照使用数据库 表的方式使用 O RM 工具。实体一对一地映射到数据库表。对应于主键等字段的变量在各个实体 中重复出现。因为数据库不支持与实体相关联的行为 ,领域模型最终只具有简单的变量以及相 关的 get t er 和 set t er 方法。这些实体的行为最终由服务或视图层实现。 在许多项目中使用 O RM 工具的经验揭示 处理这些问题的更好方法。业务领域各不相同 , 所以它们的领域模型和持久化方式也可能不同 ,但也有相同之处。本文讨论应用于不同行业的许 多领域模型的最佳实践。这里提供的最佳实践有助于产生更加一致、可重用且可维护的领域模型 。我们使用 Hibernat e 演示这些最佳实践 ,但是许多概念可以应用于其他 O RM 工具。 本文分为两部分。第 1 部分讨论以下方面的一些基本概念 : · 实现领域中的通用功能 · 减少数据访问层中的代码重复 · 按照一致的方式处理对实体修改的审计 第 2 部分更深入地讨论这里介绍的一些概念 ,还要讨论领域模型中的性能调优。 从基础开始 :对象模型 定义一个支持持久化对象的对象模型的过程与定义任何对象模型相同。首先 ,寻找所有对象 共享的通用元素。持久化信息中有两个通用元素 :惟一地标识持久化对象的方法 (应该能够跨应 用程序的各次执行标识对象 ),以及关于对象实例的审计信息。图 1 说明如何用接口和基类定义 这两个概念 : 更多精彩攻略访问 1 图 1. 通用的接口和基类 图 1 引入 Ident if iable和A dit able接口 ,这些接口定义的 A PI 用来标识对象实例和设置对象 实例的审计信息。还引入 BaseEnt it y和A dit ableEnt it y基类 ,可以根据是否需要对象的审计 信息 ,分别从这些基类派生出具体的持久化类。 通过用这些接口定义持久化对象 ,就可能创建出可以应用于所有具体对象类型的抽象行为。 这包括 UI 层 (用来标识要执行创建、读取、更新和删除 (CRUD )操作的对象 )以及服务和数 据层。本文的代码示例 (在下载中可以获得完整的代码包 )演示如何使用这些接口帮助执行审计 和减少数据访问对象 (DA O )中的代码重复。 通用的基实体 与对象不同 ,数据库表没有继承的概念。许多表中都有的字段 (比如审计字段 )必须为每个 表重新定义。请牢记 ,可以在 Java™代码中使用继承 ,以避免这种重复出现在代码中。尽管 O RM 工具早就支持这个特性 ,但是 Java Persist ence A PI 注解使之大大简化 ,可以进一步减 少代码重复。 通过使用 Java 5 注解 ,可以用类级注解在类源代码中直接嵌入数据库映射。Java Persist ence A PI 为此定义 一套标准注解。Hibernat e 和其他工具现在支持这些注解。可以通 过@MappedS perclass注解使用在基类中定义的映射。只要所有数据库表对通用字段采用相同的 列类型和列名 ,那么只需在基类中编

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档