为了回答你的第一个问题,这里有一个来自Hibernate in Action的摘录,它说有多种方法可以实现ORM:
纯粹的关系
整个应用程序(包括用户界面)是围绕关系模型和基于SQL的关系操作设计的.尽管大型系统存在缺陷,但这种方法对于可以容忍低代码重用水平的简单应用程序来说是一个很好的解决方案.直接SQL可以在各个方面进行微调,但缺点是缺乏可移植性和可维护性,尤其是从长远来看.此类别中的应用程序通常会大量使用存储过程,将部分工作从业务层转移到数据库中.
光对象映射
实体表示为手动映射到关系表的类.使用众所周知的设计模式对业务逻辑隐藏手工编码的SQL/JDBC.这种方法非常普遍,并且对于具有少量实体的应用程序或具有通用的元数据驱动的数据模型的应用程序而言是成功的.存储过程可能在这种应用程序中占有一席之地.
中对象映射
该应用程序是围绕对象模型设计的.SQL是在构建时使用代码生成工具生成的,或者在运行时通过框架代码生成的.持久性机制支持对象之间的关联,并且可以使用面向对象的表达式语言来指定查询.对象由持久层缓存.许多ORM产品和自行开发的持久层至少支持这一级别的功能.它非常适合具有一些复杂事务的中型应用程序,特别是在不同数据库产品之间的可移植性很重要时.这些应用程序通常不使用存储过程.
完整对象映射
完整对象映射支持复杂的对象建模:组合,继承,多态和"可达性持久性".持久层实现透明持久性; 持久化类不继承任何特殊的基类或必须实现特殊的接口.有效的提取策略(懒惰和急切提取)和缓存策略是透明地实现的应用程序.本地持久层很难实现这种功能水平 - 相当于数月或数年的开发时间.许多商业和开源Java ORM工具已达到这种质量水平.这个级别符合我们在本书中使用的ORM的定义.让我们看看我们期望通过实现完整对象映射的工具解决的问题.
| 归档时间: |
|
| 查看次数: |
5890 次 |
| 最近记录: |