hibernate的一级缓存
Hibernate框架中共有两级缓存. Session级别的缓存是属于一级缓存,SessionFactory级别的缓存是二级缓存.
缓存:将数据库或硬盘中的数据,存入到内存中.当下次使用的时候可以从内存中获得,减少数据库访问次数.(优化)
1.什么是hibernate的一级缓存
在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期.
2.一级缓存:生命周期与session一致.
3.程序测试
@Test public void test1(){ Session s = null; Transaction tx = null; try{ s = HibernateUtil.getSession(); tx = s.beginTransaction(); //发送查询语句,并且把查询出来的实体类对象存入Session的缓存之中。 实体类 c1 = s.get(实体类.class, 94); System.out.println(c1); //会先去Session的缓存之中去查找,如果有就直接拿出来用。 实体类 c2 = s.get(实体类.class, 94); System.out.println(c2); tx.commit(); }catch(Exception e){ tx.rollback(); }finally{ s.close(); } }
4.快照机制
@Test public void test2(){ Session s = null; Transaction tx = null; try{ s = HibernateUtil.getSession(); tx = s.beginTransaction(); 实体类 c1 = s.get(实体类.class, 94); System.out.println(c1);//输出客户级别是:VIP客户 c1.setCustLevel("普通客户");//修改客户的级别是:普通客户 System.out.println(c1);//输出客户级别:普通客户 tx.commit();//默认在此时执行快照机制。用缓存和快照进行比较,如果不一致,使用缓存同步数据库中的数据,同时刷新缓存和快照。 }catch(Exception e){ tx.rollback(); }finally{ s.close(); } }.
当执行到 tx.commit(); 默认在此时执行快照机制。用缓存和快照进行比较,如果不一致,使用缓存同步数据库中的数据,同时刷新缓存和快照。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。