介绍一个hibernate的实际项目

03-12-06 guty

测试主页:http://brisoft.vicp.net/smice (需要IE6)

这是我们公司的一个实际产品,主要面向校园一卡通市场,目前

已经有了两个高校案例。不过这里,我主要是想介绍技术层面的

东西,交流一下Hibernate在实际项目中的应用。

我们公司从去年秋天就开始研究Hibernate,并在两个小项目中初步

使用,效果还可以。

因此在今年年初,新的校园一卡通项目启动时,就决定用Hibernate

来代替EJB作为主要的O-R技术。项目到这个星期,才算出了内部测试

版,化费了几乎4个人9个月的时间。九月份时,还用一个中间版本实

施了一个实际项目。

具体技术问题就不说了,只聊一些粗略的体会吧(我在论坛上向来只

喜欢务虚:) )

1. Hibernate的功能还是比较完善的,我们项目的需求还算比较复杂,

只有少量数据库的性能调整工作还需要手工做。

2. Hibernate的性能不错,特别是用了Cache。

3. Hibernate缺点也有很多,不过都不算很严重。唯一可以说是不能

接受的是2.0.3的Callback方法中无法对session操作,很难把一些业务

逻辑放到PO当中。在实际项目中,我们在Hibernate

上又封装了一层API,定义了自己的Callback。

4. 分析模型最重要。由于Hibernate简化了DB操作,闲下来的时间让人

自然提高对模型的要求。我们有相当长的时间花在模型设计和不断的refactor上。

5. 重构的诱惑。由于项目的目标是产品化,所以很多地方刻意追求,

几乎每一块代码都经过了3次以上较大的重构。这样做有好处,但也给

小组成员的配合上带来了问题。

我自己开发的统一认证和授权系统(没最终完成),有对这一块感兴趣的

朋友可以重点看看,多提些意见,谢谢。

开发环境:

Hibernate2.0.3

Eclipse/xdoclet/maven

Tomcat4.13

SQLServer2000

Win2000Server

部署环境:

RedHat 7

Websphere4

Oracle9i

另外,本贴同时贴在Jdon和hibernate中文论坛上,顺便感谢banq和robbin两位

站长对Java社区所作的贡献。

guty@brisoft.com.cn

guty
2003-12-06 03:39

还有一些数据:

数据对象:60多个

数据表: 39张表

系统主要负荷:每天6-7万笔交易流水

交易表数据量:>1000万条记录

shenli
2003-12-06 15:09

好久没有看见大作了,呵呵

不过有两个问题想问问:

lifecycle callback不是传递了不是传递了session? 如果在PO里面操作session实际上就把PO和hibernate绑定了,Gavin King自己认为CallBack是失败的,除非在PO上面增加接口?当然一般也可以不在乎

你们是直接使用PO还是把PO转换为VO?

PS: 好cool的界面

guty
2003-12-06 15:43

lifecycle callback确实传递了Session,但并不意味着使用时需要绑定hibernate,因为我们所有对hibernate的操作都是封装的,可以用ThreadLocal变量获取当前的session.

>你们是直接使用PO还是把PO转换为VO

所有地方都只用PO。因为表现层用了OGNL,不存在Struts那样form对象和模型对象不匹配的问题。

guty
2003-12-06 15:45

>>>PS: 好cool的界面

谢谢:)我们TEAM中,有一个是javascript高手,所有的界面工作几乎都是他做的。你看看我们的打印(在一卡通系统的交易模块可以看到),这是客户最满意的地方。

7Go 1 2 3 4 ... 7 下一页