码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate session缓存

时间:2017-06-03 23:35:11      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:更新   主键   提交   strong   操作   com   语句   备份   异常   

一级缓存(执行代码时查看console台上的sql语句)

 清空缓存

@Test
public void demo03(){
//清空缓存
Session session=factory.openSession();
session.beginTransaction();

//1.查询
User user = (User)session.get(User.class, 1);
System.out.println(user);

//session.evitc(user) //将执行对象从一级缓存移除
//session.clear(); //将一级缓存所有内容清空
//session.close(); //关闭session,之后不能操作,否则将抛异常。如果session关闭,一级缓存销毁了,不能与另一个session共享数据
//2.再查询--默认情况从一级缓存获得内容
User user1 = (User)session.get(User.class, 1);
System.out.println(user1);

session.getTransaction().commit();
session.close();
}

    快照

快照:一级缓存中同样数据的一个备份,通过api不能直接操作,hibernate自己维护。用于将一级缓存中的数据与数据库 保持一致

技术分享

技术分享

刷出缓存:表示一级缓存与快照进行对比。

     修改刷出缓存时机:flushModel来进行设置。

技术分享

1.get查询,结果存放一级缓存

2.修改内容。user.setUsername("jack");//数据不一致

3.1 当执行Query进行查询时,将先执行update语句,及查询到最新。

3.2 transaction.commit():执行提交时去刷新

3.3 session.flush() 手动的将缓存刷新

  API

save.将瞬时对象  缓存 持久态对象

     主键生成策略 native:当执行save方法,将触发insert,让数据生成OID,当commit之后数据进入数据库

     主键生成策略 assigned:必须手动的设置OID,然后执行save,当提交时触发insert

update:将脱管 转换 持久

    通过OID更新数据库

 

    

 

Hibernate session缓存

标签:更新   主键   提交   strong   操作   com   语句   备份   异常   

原文地址:http://www.cnblogs.com/MisterLiu/p/6938810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!