1.在hibernate的开发中,配置对象关系映射文件的时候【如跟数据库中的users表映射,需要配置users.hbm.xml】,在配置该文件的时候,属性的type选择项有两种配置方式,一种是java语言的配置方式,一种是hibernate类型的,例如:
对于普通属性的配置:
<property name = "userName" type="java.lang.String"> 【这种就是java类型的】
<property name = "userName" type="string"> 【这种就是hibernate类型的】
2.Hibernate中使用懒加载的时候,设置lazy属性的时候,不要在one-to-many的one的一方的<set /> ,可以再many的一方配置lazy = false,这样性能会有改观,hibernate中的懒加载如果使用不当,会造成性能的大大降低!
3.懒加载:当我们查询一个对象的时候,在默认情况下,返回的只是该对象的普通属性,当用户去使用对象属性时,才会向数据库中再一次的发出查询,这种现象我们称为懒加载(lazy现象)
4.懒加载中,many-to-one的many这方,如果配置了<class name="Student" lazy="false">,那么hibernate就会在查询学生(即many方)方时,就会把相互关联的对象也查询,从后台可以看出,对select语句影响不算太大;但是,如果把one方的懒加载取消,即配置lazy = false,会发现,除了查出该部门外,还会查出跟部门关联的学生的信息全都返回,不管你是否使用,sql语句会大量增加(有多少学生,就会有查出多少个);
5.懒加载可以通过过滤器得到缓解:
需要使用openSessionInView,需要使用getCurrentSession,在过滤器中创建session,然后arg2.doFileter(arg0,arg1),在这段代码后面提交事务,在finally中关闭session的时候:
Session session = getCurrentSession();
if(session!=null &&session .isOpen() ){
s.close();
threadLocal.set(null);
}