1.缓存的作用:降低程序访问数据库频率,提高程序运行的性能。
2.Hibernate中的缓存有如下几种:
3.Hibernate中处理缓存问题:(1)一级缓存(Session):是一直存在的(不能被禁止)。
(2)二级缓存(SessionFactory):不是必然的,必须手动配置。
二级缓存中的数据面向所有session共享(session能获取到二级缓存中所有数据)。
二级缓存的条件:
适合存入二级缓存的数据;
a.较少被修改的数据。
b.不重要的数据。
c.常量数据。
不适合存入二级缓存的数据:
a.经常被修改的数据。
b.不允许并发访问的数据。
c.共享数据
(3)查询缓存(Query):在Query对象中开启。
一般在批量数据处理时会出现:内存溢出异常。
程序在向数据库惊喜操作时,都会经过session缓存区,数据就会缓存在session中,当数据料过大时,就会造成内存溢出,使得程序出现异常。
处理方案:给定判断条件进行缓存情况,但是在缓存情况之前必须刷新缓存。
处理步骤:
给定的判断条件满足时执行:
(1)刷新缓存
(2)清空缓存
(3)事务提交
(4)重写开启事务
如下:
Session session = HibernateUtil.getSession(); Transaction trans = session.beginTransaction(); for (int i = 0; i < 100000; i++) { Users user = new Users("zhangsan", "zs123"); session.save(user);//执行插入操作 System.out.println(i); if(i%100 == 0){ session.flush();//刷新缓存 session.clear();//清空缓存 trans.commit();//事务提交 trans = session.beginTransaction();//重新开启事务 } } trans.commit();//事务提交 HibernateUtil.closeSession();