大家来一起讨论如何通过Hibernate提高访问数据库的速度
由于关系复杂表和表之间的关系很多,在很多地方把lazy都设置false,所以导致数据一加载很慢,而且查询一条数据更是非常的慢,由于项目时间比较短,时间很紧,所以一直都在忙着实现功能,还没来的急进行优化
今天我设置下二级缓存 效果不大,我想肯定还有更好的方法,比如Hibernate.initialize 还有迫切连接等方法
请大家多给点意见,最好给一个详细的技术文章
谢谢大家~!
你的业务设计采取面向数据表分析,导致关系复杂表和表之间的关系很多,这是你的系统性能问题最本质原因,只有使用DDD重新分析你的系统,才从根本上改观。
其他只是一些小修小打的微调,不能根本解决问题。
非常有意思,当初Hibernate刚出来时,有人和我争辩:NO EJB,NO EntityBean,大肆指责EJB实体Bean使用复杂,推崇Hibernate,如今还是同样的轮子,说明主要问题是我们建模方式不对,我会专门文章讨论
我也觉得banq有点偏激了!!
使用Hibernate前提必须掌握领域建模的方法,也就是Evans DDD,至少了解类关联的意思和本质。
我们以前很多程序员都是基于数据表编程的思路,现在使用了Hibernate这样的ORM,Hibernate替代了数据表,或者说;插在了数据表和程序员之间,程序员就看不见数据表了,程序员必须学会和Hibernate代表的对象打交道,如果还是念念不忘数据表,那么每次用Hibernate,总是要转个弯,就不自然而且不方便。
换句话说:只有程序员真正掌握面向对象的分析设计和编程,才会觉得使用Hiberante等ORM工具是一个最简单的方式,否则,反而觉得数据表JDBC是一个简单的解决方式。
所以,可以从是否善用Hibernate看出程序员的OO素质。虽然你的单位是电信大单位,但是OO作为一个与面向过程全新的革命性技术和思想,它是挑战和颠覆面向过程的思维的,而我们国内以前大学教育以及实践如Delphi/VB等等都是传统的面向过程思维,虽然他们做过大项目,经验丰富,但是也吃了很多苦头,只是朴素地直觉认为程序要灵活,但是没有上升为OO理论,因为掌握OO是对自己过去经验和习惯的挑战,是对自己的挑战,又有几个人做到,象你这样舒服的大单位,谁有没事折磨自己,挑战自己呢?
总觉得Hibernate影响设计思路
http://www.jdon.com/jive/thread.jsp?forum=62&thread=27886
当前Java软件开发中几种认识误区:
http://www.jdon.com/mda/nlayes.html