Hibernate学习笔记

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

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值