当然,不是完全使用DDD来设计就能提高性能,还需要依赖自己对缓存的掌握和灵活控制,我的建议是这样:简洁直接的业务建模+缓存优化。
当然,不是完全使用DDD来设计就能提高性能,还需要依赖自己对缓存的掌握和灵活控制,我的建议是这样:简洁直接的业务建模+缓存优化。
通常我会在项目中同时使用hibernate和jdbc,当然,会有自己的封装。
单纯做ORM,我倒是觉得itabis是个更好的选择。
现在,这个项目,我们在业务领域分析方面,做了一点小工作,并且借鉴spring的思路,多在行为定义,行为组装上下功夫,尽量解耦行为与数据、行为与数据关系。应该说,比原先有所进步。我相信,随着项目组对hibernate的深入,对OO的深入,对业务领域分析的深入,我们的路会越来越清晰。
看怎么设计了,你是只单台server吧
几个月前,一次经历:由于设计问题,使客户一次操作产生几千条SQL,这样明显是设计问题,后来采用工具+DEBUG,拦截宋庆龄,看看是什么地方产生的问题,最后找出问题,把几千条变为几条,性能提高越30倍。
最夸张的是有个同事发了HIBERNATE产出的SQL让我查错,竟然是几页WORD的SQL,我没有能力找错误,这问题在什么地方,在设计!
所以用HIBERNATE,你是不是准备好了,公司的技术储备是不是可以,是不是已经从数据分析转道对象,领域分析了,是否清楚如何设计合理的对象关系,所以HIBERNATE只是O/R工具,他需要分析设计先行的基础!
系统开发过程中,问题来自多方面,比如说用了hb,查询性能下降很多,
可能会是多中原因造成的,比如,开发人员熟悉hb的程度够不够,能不能对HQL语句进行优化;对hb的长处和短处是否理解,知道什么情况下,使用hb的缓存会提高性能;
另外,还有设计的问题,对象的粒度是否合适,类和表怎样映射才更合理...
总之一句话,你对hb理解到什么程度,写出的程序的性能也会不同!
Lazy Loading is Easy: Implementing a Rich Domain Model
http://today.java.net/pub/a/today/2006/07/13/lazy-loading-is-easy.html
其中有一句:
First off: why would you want to do lazy loading? The most important reason is to be able to have a clean domain model.
为什么你需要赖加载?最重要的是必须有一个干净的域模型Domain Model!这篇文章就是谈如何实现一个胖模型。
>是电信这样的大公司啊
使用Hibernate前提必须掌握领域建模的方法,也就是Evans DDD,至少了解类关联的意思和本质。
我们以前很多程序员都是基于数据表编程的思路,现在使用了Hibernate这样的ORM,Hibernate替代了数据表,或者说;插在了数据表和程序员之间,程序员就看不见数据表了,程序员必须学会和Hibernate代表的对象打交道,如果还是念念不忘数据表,那么每次用Hibernate,总是要转个弯,就不自然而且不方便。
换句话说:只有程序员真正掌握面向对象的分析设计和编程,才会觉得使用Hiberante等ORM工具是一个最简单的方式,否则,反而觉得数据表JDBC是一个简单的解决方式。
所以,可以从是否善用Hibernate看出程序员的OO素质。虽然你的单位是电信大单位,但是OO作为一个与面向过程全新的革命性技术和思想,它是挑战和颠覆面向过程的思维的,而我们国内以前大学教育以及实践如Delphi/VB等等都是传统的面向过程思维,虽然他们做过大项目,经验丰富,但是也吃了很多苦头,只是朴素地直觉认为程序要灵活,但是没有上升为OO理论,因为掌握OO是对自己过去经验和习惯的挑战,是对自己的挑战,又有几个人做到,象你这样舒服的大单位,谁有没事折磨自己,挑战自己呢?
这是一个经典的评论,如果可以评分的化应该使9+!
Hbm对于数据库的设计是以大挑战,善于使用o/r业务设计者,那张数据库表就和oo程序一样,从命名上就能看出来!
tss上有一篇文章,那个人的数据库设计真是夸张,可以文章找不到了,但是我就举几个名字给大家听!
hasHandleFactory,codingProxy,person,person.children,person.children.others