为什么很多人不愿意用hibernate了?
from: http://baijiahao.baidu.com/s?id=1593915948209283169&wfr=spider&for=pc
先说hibernate厉害在哪,然后再来说为啥享受hibernate这些便利会有问题。
如果这么看,似乎没有不用hibernate的道理,但其实不是的,强烈建议不用hibernate,尤其是需要处理大量数据或者大并发情况的网站服务,那么现在开始说hibernate的问题。
第二,很多web服务,对cache的依赖是非常大的,hibernate自带的cache按理说也是很强大的,但是还是不能满足很多需求。
第三,hibernate的确是在你项目开始的时候给你节约了很多时间。但是它让你的业务逻辑模型和数据库模型互相依赖的程度太高了。这短期没有问题,但随着项目的变迁,这些都会改变,在维持这种紧紧耦合的关系的时候,你会发现你的代码特别脆弱,随便改一处数据库的schema,整个java项目可能要改几十处。而且现在mybatis的自动mapping做的也不差,开发起来也没多花多少时间。等项目进入中后期,你需要大量定制和优化查询的时候,mybatis的开发效率就胜出了。
还有一点可能是我个人喜好了,作为一个后端程序员,我比较喜欢每一行代码我都精确知道它到底在干什么。尤其是数据库访问的代码,往往系统的瓶颈就在这些地方产生,每一行都不能小看。我看过hibernate早期版本的部分代码,比我想象的复杂和强大很多。的确很多地方Hibernate可以强大的只用一行代码解决很多问题,但比如说一个update()或者save()到底做了什么,这里既有hibernate本身的逻辑,也有你应用的逻辑,如果这一行产生了问题,你该如何去做?我个人觉得这是很难搞的,还不如一开始费点事,用ibatis这种。
