Hibernate 启动时间的问题

原始发表时间:2009-06-13

    项目做到现在比较头痛的问题之一就是hibernate引入对启动时间的影响。
    我做的是用swing开发的客户端,提供给用户用来登记一些信息,但是由于功能很多,所以有一部分交给我们组其他同事协助完成。
    大家比较熟悉hibernate,也许换那种直接操作对象的编码方式,所以有许多操作数据的代码都依赖于hibernate,而我受到上一个项目的影响,编码时都只是用ibatis这个ORM工具,所以在最后整合的时候遇到了头痛的事情。
    如果只用ibatis的话,客户端启动大约是10秒左右,但是引入hibernate之后,42个hbm文件的加载初始化,就得消耗大约30多秒,界面完全显示估计约1分钟,这恐怕是许多用户无法忍受的。
    后来在google上查询“hibernate startup”、“hibernate performance”等关键字组合,发现了hibernate官方的194号讨论问题,讨论帖链接“https://www.hibernate.org/194.html ”,官方的回应是推荐使用“hibernate.cglib.use_reflection_optimizer=false”这个属性设置来提高启动速度,但是我自己和后面有关讨论者的实测都发现这个方法没有效果。
    后面有位老兄推荐自己的项目“Hibernate Dynamic Module”,据称可以解决hibernate启动时间过长的问题,不过看了一下2006年就没继续更新了,偶可是不敢用这种东东……
    有一位兄弟的话倒是有点用处,说是将所有的class的hbm.xml配置文件都设置为lazy="false"这样就可以一定程度的提高启动速度,例如

<class name="myClass" table="myTable" lazy="false">

    刚刚实测了一下,效果不佳,只快了一两秒钟……

    后来搜索到官方的一个讨论帖“startup time improvements”,链接是http://opensource.atlassian.com/projects/hibernate/browse/HHH-1258
    还没有来得及实验其中给出的补丁,等试验完成后再续前文……

    2009年6月17日23:17:49 补完本文
    虽然很遗憾,但是截止目前为止没有找到合适的提高启动速度的方案。无论是官方还是坊间,我都没有找到解决方法,当然也说不定正在某一时刻正在有人敲击着良好解决该问题的代码,期待着……
    后来只好采取“曲线报国”的策略,因为我开发的应用是C/S架构,所以想到增加一个线程初始化这些费时的配置信息,主线程来显示用户界面,这样用户可以第一时间看到界面,后台呢,则在用户慢悠悠的录入用户名和密码的时候初始化配置信息,给用户造成一些错觉,感觉等待的时间变少了。(之前的设计是完成Spring配置初始化后,用户界面才显示,这样用户会因为没看到界面而干着急,或者已经打电话到偶办公室来投诉了……)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值