hibernate中的缓存和快照
1. 获取数据,代码如下:
Customer c1 = session.get(Customer.class,11); Customer c2 = session.get(Customer.class,11); System.out.println(c1==c2);
2.输出的结果为: true
3. 第一次查询Customer,会将数据从数据库中取出,并封装,放入一级缓存并返回给我们, 第二次查询Person,会直接从缓存中获得,不再查询数据库,这样缓解了数据库的压力。
4. 修改数据,代码如下:
Customer c = session.get(Customer.class,11);
c.setCust_name(c.getCust_name());
c.setCust_name("newname");
5.其实当我们进行第一句查询时,hibernate把返回的Customer对象一式两份,一份保存到一级缓存,一份保存到快照当中,
然后返回给我们的是缓存中的对象。
6.图示如下: