1.4.3 为什么是ORM

ORM看起来是一个复杂的怪兽,它没有应用程序服务器那么的复杂,但是又比一些web框架复杂的多,诸如Struts和Tapestry。我们为什么在程序中引入如此复杂的东西,值得这样做吗?

在本书中,会提供这些疑问的绝大部分答案。对于那些急不可待的人来说,我们先来提供一些ORM带来的一些显而易见的好处。但是首先,我们先来快速的看一下它的所谓缺点。

一般情况会认为ORM能使程序员脱离那些凌乱的SQL。这个观点可能认为面向对象的开发者并不希望理解SQL和关系数据库,因为他们发现SQL和面向对象有点格格不入。从另一方面来说,JAVA开发者应该十分熟悉SQL和关系模型,因为这样才能更好的使用ORM。对于那些早已经习惯硬编码SQL的开发者来说,ORM是一个更加高级的工具。为了更高效的使用Hibernate,你必须要更加理解SQL和关系数据库。

现在让我们来看看ORM和Hibernate的好处。

生产力

在JAVA程序中,和持久化相关的代码应该是最鼓噪乏味的代码了。Hibernate大量的削减了这些乏味的代码,使开发者更加专注于业务逻辑。不论你采取什么样的开发策略,无论是从业务模型开始的由上至下、或者是从数据库Schema的由下至上的开发,Hibernate都会帮您节约大量的时间。

可维护性

自从系统强调业务逻辑的重要性以后,使用更少的代码就能使整个系统更加容易理解。更重要的是,越是简洁的系统越是容易重构。自动的对象/关系持久化充分的减少了代码量。当然,完全通过代码的行数来衡量一个系统的行数是存在争议的。

然而,还有更多的理由来解释Hibernate的可维护性。那些手写持久化的系统中,业务层和持久层结合的过于紧密。修改任何一方都会影响另外一方。而且由于这种紧密结合的特点,任何一方的设计都要考虑另外一方。ORM在二者之间提供一个缓冲层,这样你可以更加优雅的在java端使用面向对象的特性,ORM实现二者之间的绝缘。

性能

一种常见的说法是手写的持久层比自动持久化的速度更好。在完全相同的环境中,这种说法是正确的,但是,当我们把时间和预算都考虑进去的时候,性能更好的是哪一方呢?

假设有一个持久化的任务,这个任务可以做许多可能的最优化。而且其中许多能够通过SQL/JDBC很容易完成。然而,这些最优化,通过ORM能够更加容易的达到目标。在一个有着时间限制的开发项目中,手写的持久化通常只允许你做一部分的最优化。相比之下,Hibernate可以为你提供更多的优化。进一步说,Hibernate为你节省了时间,这样你可以花费更多的时间和精力去解决那些真正影响系统的瓶颈问题。

最后,那些使用了ORM的开发者们能够拥有更多的时间去调查优化的问题。你知道Preparedstatement在DB2的驱动程序中能够提高性能,而在InterBase的驱动程序中恰恰起到相反的效果吗?你知道一些仅仅更新那些改动的列在一些数据库中更快,而在另外一些数据库中则更慢吗?在手写的持久化中,能够做出这些实验并不是一件容易的事情。

独立性

ORM使得你的业务逻辑和SQL之间隔离。如果你的系统需要支持多个系统的话,ORM为你提供这种可携带性。当然你不要指望那种一次编写、到处运行的美好希望。但是,使用ORM可以为你提供这种便捷的特性。即使你的程序并不需要支持跨平台,ORM仍然能够为你减轻这方面的风险。同时,当开发的时候和发布使用的数据库不同的时候,ORM的好处就可想而知了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值