您的位置:首页网页设计JSP教程 → Hibernate经验总结

Hibernate经验总结

时间:2009/12/17 17:13:00来源:本站整理作者:我要评论(0)

Hibernate经验总结

0、双向关联中最好是设置一端inverse=true,一端inverse=false。一般inverse=false会放在多的一端,即由多的一方来维护关系,并在多的一方设置cascade="save-update",在单的一方设置cascade="all" 。 
1、使用Hibernate的id generator来生成无业务意义的主键,不使用有业务含义的字段做主键,不使用assigned。  
2、使用对象类型(String/Integer/Long/...)来做主键,而不使用基础类型(int/long/...)做主键。  
3、在用Integer做主键时,需设置unsaved-value="0" 而不是null或none,因为在程序中它被默认设置成了0. 
4、不使用composite-id来处理复合主键的情况,而使用UserType来处理该种情况。 Gavin King并不提倡使用composite-id,如果你不是基于已有的数据库编程,而是重新设计数据库结构,那么建议使用UserType。你可以自定义一个UserType,包括User和Goods,并且在hbm中定义该UserType为unique的,同样可以达到目的。而这种方式的好处则是不需要你来手工维护id,而由Hibernate自动维护。UserType的使用方法参考手册5.2.4节和Hibernate自带的示例中的net.sf.hibernate.test.DoubleStringType。 
5、在使用HQL的地方,结果一般不会受XML中设置的影响。 
6、fetch参数为select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个select查询,获取关联的对象,形成n+1次查询; 
而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。 
如果你的关联对象是延迟加载的,它当然不会去查询关联对象。 
另外,在hql查询中配置文件中设置的join方式是不起作用的 
7、使用full join fetch 与 right join fetch是没有意义的。 
8、添加数据、删除、更新操作时,将同时更新二级缓存。这就是Hibernate做批处理的时候效率不高的原因,原来是要维护二级缓存消耗大量时间的缘故 
9、unsaved-value 属性在Hibernate3中几乎不再需要。 
10、单向关联更加难于查询。在大型应用中,几乎所有的关联必须在查询中可以双向导航。 
11、在两层结构中,把Hibernate Session从JDBC连接中脱离开,下次需要用的时候再连接上。绝不要把一个Session用在多个应用程序事务(Application Transaction)中,否则你的数据可能会过期失效。 
12、在系统中对性能要求很严格的一些部分,某些操作也许直接使用JDBC会更好。但是请先确认这的确是一个瓶颈,并且不要想当然认为JDBC一定会更快。如果确实需要直接使用JDBC,那么最好打开一个 Hibernate Session 然后从 Session获得connection,按照这种办法你仍然可以使用同样的transaction策略和底层的connection provider。 
13、当异常发生的时候,必须要回滚 Transaction ,关闭Session。 
14、多对多连接用得好的例子实际上相当少见。大多数时候你在“连接表”中需要保存额外的信息。这种情况下,用两个指向中介类的一对多的连接比较好。 
15、绝大多数的查询并不能从查询缓存中受益,所以Hibernate默认是不进行查询缓存的。如若需要进行缓存,请调用 Query.setCacheable(true)方法。这个调用会让查询在执行过程中时先从缓存中查找结果, 并将自己的结果集放到缓存中去。

相关视频

    没有数据

相关阅读 hibernate中的关系处理Hibernate经验总结MyEclipse配置struts+hibernate+springSoundflower怎么使用 Soundflower使用教程iPadOS beta 2下载 iPadOS beta 2固件下载地址iOS 13 beta 2下载 iOS 13 beta 2固件下载地址macOS 10.15支持哪些设备升级 macOS Catalina可升级设备一览macOS 10.15有什么新功能 macOS Catalina新功能详细介绍

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 没有查询到任何记录。 几个提升JSP应用程序效率的小方法JAVA面试问题宝典EL表达式语言的基础总结java常用图片读写程序

人气排行 java读取文本文件内容并获取文件大小教你5种JSP页面显示为乱码的解决方法教你java用getAddress方法取得IP地址spring依赖注入的3种实现方式JSP学习心得Java的字符串函数集锦告诉你jsp获取浏览者真实IP地址方法高手谈Java如何进阶