别人的域名解析到了我的网站上,wordpress输入密码访问,购物网站是用什么软件做的,下载类wordpress主题对Hibernate使用之愚见 国人跟风之潮#xff0c;自古有之#xff0c;至今亦然。确实#xff0c;经过配置优化的Hibernate效率与无任何优化的Hibernate效率诚然不可同日而语。但由于项目开发的复杂性#xff0c;开发周期中一些突发因素的制约#xff0c;及项目构建者自身能… 对Hibernate使用之愚见 国人跟风之潮自古有之至今亦然。 确实经过配置优化的Hibernate效率与无任何优化的Hibernate效率诚然不可同日而语。但由于项目开发的复杂性开发周期中一些突发因素的制约及项目构建者自身能力的约束在大型项目中尤其是在表结构复杂的大型项目中以某之愚见国内能将Hibernate真正使用妥当者尚未多有。目前随处可见的Hibernate优化方式无外以下几条 1、修改hibernate.properties增加以下两句 hibernate.jdbc.fetch_size50 设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数目前MySQL似乎还不支持 hibernate.jdbc.batch_size100 对数据库进行批量删除批量更新和批量插入的时候的批次大小令多条语句使用batch操作 2、one-to-many的关系里将lazy设成true开启延迟加载 3、HQL优化对于语句本身进行优化 4、映射文件优化(ID生成策略二级缓存延迟加载关联优化) 5、对大数据量查询时慎用list()或者iterator()返回查询结果 6、Session管理优化可考虑使用spring的HibernateTemplate 7、一级缓存的管理优化 8、针对二级缓存使用相关策略 9、事务控制优化 另外Hibernate本身借助cglib对字节码有一定程度的优化但是目前受到Java本身效率限制感觉上帮助并非很大。 当然了我仅是大体上说说本身还有很多很多细节方面的问题存在及其它很多设置可供调整。但是由于本人之不学即使这样设定出的Hibernate之效率依旧不高PS:我开篇便已说过这是由于本人能力低下造成的与Hibernate无甚相关。 但在同样表结构复杂项目中使用相对简单的ibatis不需什么配置却明显在效率上优于Hibernate再重申在下从没说过Hibernate效率有问题只是某才疏学浅配置不当而已 我粗略的将两者作以下对比1 iBATIS非常简单易学Hibernate相对较复杂门槛较高(借助IDE还比较方便)。2 二者都是比较优秀的开源产品(谁否认谁敢否认)3 当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合(我就是经常做遗留项目……)4 系统数据处理量巨大性能要求极为苛刻这往往意味着我们必须通过经过高度优化的SQL语句或存储过程才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。5 iBATIS需要手写sql语句也可以生成一部分Hibernate则基本上可以自动生成偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的如果涉及到数据库字段的修改Hibernate修改的地方很少而iBATIS要把那些sql mapping的地方一一修改。(真正配置好的Hibernate当然很方便问题是什么人负责配置……)6 iBATIS以数据库字段一一对应映射得到的PO和Hibernte这种对象化映射得到的PO是截然不同的本质区别在于这种PO是扁平化的不像Hibernate映射的PO是可以表达立体的对象继承聚合等等关系的这将会直接影响到你的整个软件系统的设计思路。7 Hibernate现在已经是主流O/R Mapping框架从文档的丰富性产品的完善性版本的开发速度都要强于iBATIS(从目前大多数公司的跟风态度便可以看出)8 最关键的一句话是iBATIS的作者说的我认为很诚恳If you are starting a new project and youre in full control of your object model and database design, Hibernate is a good choice of O/R tool.If you are accessing any 3rd party databases (e.g. vendor supplied), or youre working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. Thats were an SQL Mapper comes in handy 事实上我并不反对Hibernate而且是在争取成为其拥护者(最近在开始扣Hibernate代码其实从05年就开始但是没坚持超过3天……)但是以某之不才及短见却不赞同无论任何项目都使用Hibernate,尤其是无理由的想当然跟风使用。甚至某些人把背下Hibernate中一些API都当成很自豪的事情更让我觉得不可理喻。 框架体系这些东西说到底是为更有效的完成编程目的而存在的。无论内部斗得多么厉害对用户来说也是毫不相关的事情(除非用户在某些事物影响下自己提出来要用什么框架……) 愚虽不才还是希望能因时因人因事而定不要一概而论。有感而发不知所云兴起而言兴尽乃至。 posted on 2007-08-19 19:56 cping 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/cping1982/archive/2007/08/19/2258119.html