hibernate最新发布包的javadoc里对这三个方法的解释是:
  clear() :Completely clear the session.清空session,该清空操作只对于要保存的、删除的和修改的数据起作用,不涉及查询的结果。
  close() :End the session by releasing the JDBC connection and cleaning up.释放并清空JDBC连接。但是不一定非得关闭session。
  flush(): Force this session to flush.强制刷新流的缓冲。flush必须在一个操作单元结束之后且在提交事务和关闭连接之前被调用。例如插入一条数据。
sess.save(user);的意思是将user持久化,也就是说把数据插入到数据库中。清空缓存是在持久化之后进行的。至于要不要清空缓存,是要看你的FlushMode是怎么设置的。

 session.clear()方法负责清空session缓存中的实体对象,不管缓存中数据是否与数据库记录一致;

 session.flush()方法负责同步session缓存中的实体对象与数据库记录,保持数据的一致性。

 @Test
public void testSessionClear() {
Session session = sessionFactory.openSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
System.out.println(t.getName());
session.clear(); //这里不clear只会执行一次sql语句,有clear会执行2次
Teacher t2 = (Teacher) session.get(Teacher.class, 3);
System.out.println(t2.getName());
session.getTransaction().commit();
}
如果不是clear(),由于一级缓存的存在,查询同样的记录,只会发出一条sql语句;如果清空了session缓存,那么这里会发出2条sql语句。 
@Test
public void testFlush()
{
Session session = sessionFactory.openSession();
session.beginTransaction();
Teacher t = (Teacher) session.get(Teacher.class, 3);
t.setName("xiu");
session.flush(); //有flush会执行2次UPDAE,没有会只执行一次
t.setName("aty");
session.getTransaction().commit();
}

如果不执行flush,只会发出一条update语句;执行了flush,会发出2条update语句,也就是说flush会强制缓存与数据库数据同步

最新文章

  1. socket通信之eofexception
  2. python 随机生成固定长度的字串
  3. Entity Framework Code First数据库自动更新
  4. 【BZOJ-1113】海报PLA 单调栈
  5. Android学习笔记(十二)——实战:制作一个聊天界面
  6. js实现无刷新表单提交文件,将ajax请求转换为form请求方法
  7. robotframework数据驱动框架
  8. Go语言参数中的三个点是干什么的
  9. Operfire/XMPP
  10. OpenGL蓝宝书第五章代码勘误以及惯性坐标系去解释模型变换:Pyramid.cpp
  11. IDL绘制黑体辐射曲线
  12. 调用CImg库显示WAV格式音频波形
  13. 生物分子gene
  14. Unity资源打包学习笔记(一)、详解AssetBundle的流程
  15. 一个优秀的SEOer必须掌握的三大标配技术
  16. Ubuntu下安装kate编辑器
  17. app优化之流量节省
  18. Docker:搭建私有镜像仓储(image registry)(4)
  19. AES,BigInteger,MD5加密
  20. 冲刺博客NO.1

热门文章

  1. Kong管理UI -kong-dashboard (附kong封装webservice方法)
  2. Parquet列式存储格式
  3. Bootstrap:教程、简介、环境安装
  4. 去掉chrome浏览器中input或textarea在得到焦点时出现黄色边框的方法
  5. SQL查询日期:
  6. bitmap运算
  7. IDEA编译Flume Sink通不过解决方法
  8. SDOI 2017 天才黑客
  9. Python 之 cas-clinet
  10. css (具体代码看笔记本)