1.4.1 什么是ORM

简言之,对象关系映射就是通过使用描述对象和数据库的映射元数据,自动的把java对象持久化到关系数据库表中。从本质上,就是把数据从一种表现形式转换成另一种表现形式。

当然,ORM的存在对性能也提出了挑战。然后,如果将ORM作为一个中间件来实现的话,那么就可以不断的对其进行优化。ORM另外一个需要考虑的地方就是维护映射数据,然后相对于手工写的代码来说,这种维护代价看起来微不足道。即使是ODMG对象数据库仍然需要类级别的元数据。

ORM一般由下面的4部分组成:

1)有支持CRUD的API

2)能够查询类及其属性

3)能够方便的维护映射元数据

4)能够支持脏数据检查,延迟加载以及一些其他的优化策略。

在这里,我们所说的ORM是通过元数据来自动生成SQL语句的的持久层,而程序员通过手写SQL和JDBC来实现的持久层并不在我们讨论的范围。ORM通过有SQL/JDBC为底层的ORMAPI和程序进行联系。像乐观锁或者缓存这些问题则完全由ORM来接手。

让我们来看看ORM不同的实现方式。作为一个ORM领域的研究者,Mark Fussel定义ORM质量的四个层次。

纯关系

整个应用程序,包括用户接口,都是围绕关系模型和SQL为基础的关系模型来设计的。这种方法,对于大型系统来说并不适合,但是对于简单的系统来说,这种低层次的代码重用是可以容忍的。虽然直接使用SQL有很多好处,但是缺点也是显而易见的,它的便利性不好,而且不会可维护性不好,尤其在那种复杂的运行当中,这些缺点就更明显。在这个层次的代码通常过度的使用存储过程,它们把很多的负载从逻辑层移到了数据库。

轻量级的对象映射

在这种形式中,实体以类的形式来映射到数据库。通过设计模式将手写的SQL/JDBC隐藏在业务层。在实体的数量较少的情况这种形式被使用的最为广泛和成功。同时在这样的系统中会使用一定数量的存储过程。

中量级的对象映射

这种程序都是围绕对象模型来建立的。而SQL通常是由生成工具或者框架来自动生成的。对象之间的联系都是通过持久机制来支撑,而查询机制则是使用面向对象的查询方式。对象由持久层来进行缓存。许多ORM的产品或者自己实现的持久层都至少要实现这个级别的功能。这个层次的映射十分适合中等规模的项目能够支持许多复杂的事务,尤其是适合支持多个数据库的时候。这些应用程序通常不使用存储过程。

完全的对象映射

这种形式的映射要支持复杂的对象模型:组合,继承,多态等等。持久层实现了透明的持久机制,持久类不需要继承特定的基类和接口。一些高效的存取策略和缓存策略对于应用程序都是透明的。这种形式的映射通常很难由程序员个人来实现,因为它需要数月甚至更长的时间来实现。目前已经有一些商业或者开源的产品已经实现了本书中所讲的ORM定义,现在就让我们来看看这种完全的映射能够为解决哪些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值