hibernate性能优化备忘录

1、注意session.clear()的运用,尤其在不断分页循环的时候

a)  另外一种形式的内存泄露  ( Java有内存泄漏吗?语法上没有,但是可由java引起,例如:连接池不关闭,io读取后不关闭)

2、1+N问题

      a) @ManyToOne(fetch=FetchType.LAZY)

       fetch=FetchType.LAZY 解决N+1问题 说明如下:

        当多对一(@ManyToOne)已经设定属性" fetch=FetchType.LAZY "时

       只有当需要时才会去获取关联表中数据 可以解决N+1问题

b)@BatchSize

       //@BatchSize 解决N+1问题 说明如下:

       //在与查询表关联的表类头处加@BatchSize(size=5)

       //表示每次可查出5条记录 从而减少了select语句的个数

c) join fetch

       //join fetch 解决N+1问题 说明如下:

       //修改hql语句为--"  from xxx  left join fetch xxx "

d)QBC

       //QBC(Query By Criteria) 解决N+1问题 说明如下:

       //使用QBC的 createCriteria(*.class)执行查询 也可避免N+1问题

3 、listiterate不同之处a)         list取所有

b)iterate先取 ID,等用到的时候再根据ID来取对象

c) sessionlist第二次发出,仍会到数据库査询

d)iterate 第二次,首先找session 级缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值