Hibernate学习笔记

来源:互联网 发布:简易建模软件 编辑:程序博客网 时间:2024/06/02 04:15

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);

}





原创粉丝点击