`

Hibernate 启动时间的问题

    博客分类:
  • ORM
阅读更多

原始发表时间: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配置初始化后,用户界面才显示,这样用户会因为没看到界面而干着急,或者已经打电话到偶办公室来投诉了……)

分享到:
评论

相关推荐

    深入浅出Hibernate.pdf

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    hibernate根据字段生成数据库表

    如果在mysql中写的代码又要在另一个数据库中应用,节省建表的时间

    Struts Spring Hibernate性能优化

    首先是找到了hibernate的启动优化 http://www.hibernate.org/194.html 里面的主要思想是通过将xml序列花到本地的文件里,每次读取的时候根据情况,从本地文件读取并反序列化,节省了hibernate xml的解析时间。

    内容管理系统 jsp+hibernate+struts

    本软件采用jsp+sqlserver+ hibernate+struts实现,并使用了freemarker静态化、会员登录的状态以及文章点击使用ajax动态处理。本系统以学习技术为...备注:可能较长时间没有进行程序开发,系统不完善,仅作学习之用!

    DeneDown:定时睡眠/Hibernate/关机/重启工具-开源

    根据您的时间设置将PC设置为睡眠,Hibernate,关闭或重新启动。 时间可以设置为1分钟到24小时之间(以1分钟为增量)。 倒数计时器会显示该操作发生之前的剩余时间。 这是x64 / x86的组合版本。 (注意:当时间读为0 ...

    spring3.2+strut2+hibernate4

    -- 连接池启动时的初始值 --&gt; ${jdbc.initialSize}"/&gt; &lt;!-- 连接池的最大值 --&gt; ${jdbc.maxActive}"/&gt; &lt;!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到...

    hibernate-envers-demo:使用Hibernate Envers,Spring Boot和AngularJS的简短演示

    Hibernate启用演示问题陈述这是一个使用Hibernate Envers,Spring boot和AngularJS的演示项目。 它旨在作为称为“四眼原理”( )的实际用例的解决方案。 此用例的主要参与者是“制造者”和“检查者”。 第一个将对...

    安卓员工请假审批系统app

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android问卷调查系统设计

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android医院门诊预约系统app

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android医院门诊预约系统app毕业源码案例设计(毕业设计)

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android酒店房间预订app设计

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    Java性能分析神器-JProfiler

    JProfiler 可以帮助您监控服务的运行情况,例如当前 QPS、平均延迟、99% 延迟、99.9% 延迟等指标,同时也可以分析接口响应时间慢的原因。 JProfiler 的特点包括: - 快速启动:JProfiler 可以在几秒钟内启动并开始...

    安卓Android医院门诊预约系统APP源码案例设计

    项目描述: 开发环境:Windows + ...服务器采用SSH框架,需启动Tomcat服务器,Hibernate会自动生成数据库表。 在admin管理员表中添加测试账号密码后即可登录后台。、 项目中有详细描述、如有问题请联系作者获取支持

    安卓Android精品课程在线学习系统app设计

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 学生...

    安卓Android公交线路查询系统app毕业源码案例设计

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android新闻发布系统app

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 新闻...

    安卓Android公交线路查询系统app毕业源码案例设计.zip

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android公交线路查询系统app可升级AndroidStudio

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

    安卓Android电影院订票app设计

    【服务器端采用SSH框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 用户...

Global site tag (gtag.js) - Google Analytics