业务逻辑层下的ORM层用什么,有人推荐Hibernate,也有人对此持否定态度,所以决定先了解一下,以下是我看了几天文档后的一些体会,可能有点悲观。
1,Hibernate究竟能用到多大的项目?
什么是多大,这很难说,我想应该是数据库表比较多,业务逻辑比较复杂(表关联复杂),而且要求性能比较高吧。其他行业我不知道,电信行业软件都该是如此。据我了解,这样的数据库访问(尤其是频繁发生的交易)通常需要用存促过程来解决,甭说自己写Java的JDBC了,更不用提用Hibernate来解决。所以肯定有个适用范围的问题,希望已经熟练hibernate,并做个一些项目的人的人给予帮助解决
2 Hibernate性能会多好?
很多人都说Hibernate性能好,无非是它的一些cache功能,姑且不讨论是否有这样的最佳实践(希望国内有人能提出best practices,或者pattern),单从cache本身来说,也并不是有了就好,否则,也不会出现分布式cache。就像长辈成天唠叨这,唠叨那,我表面认为那是对你好,其实你自己心里甭说又多烦恼了。hibernate为了解决方方面面的性能,而提供了方方面面的特性,但这些加在一起就不是好事情了
3 DBA赞同在项目中使用Hibernate么?
我不是DBA,甚至对写sql语句都不熟悉,所以有时候写DAO的时候经常请教DBA,DBA也很习惯的在DAO中找到他们熟悉的SQL(而不是HQL),我想这是DBA不提倡Hibernate的一个原因。另外一个原因是在于数据库本生就是一个十全十美的系统,无论其性能还是伸缩性(我想没人反对我的观点吧),因此DBA深信,能把问题交给数据库是最好的。因此他们不会赞同一切都依靠Hibernate。这个观点也希望懂Hibernate的DBA给予证实
EJB的历史使不少人都以怀疑的态度来看待Hibernate,以前EJB怎么成功的,Hibernate也在走这样的路,所以,我不太相信评测,只是希望一且能从实践出发,让hibernate能减少开发人员工作量,以及减少用它的风险。