clear(), evict(), flush()三种方法的用法实例
2016-01-17 20:31
471 查看
先贴代码:
clear()方法, 删除全部的缓存
evict()方法, 删除指定的缓存
flush()方法, 强制刷新
代码有点乱, 都是测试代码, 这个flush()方法需要标注一下, 比如一个实体类 something st 已经存入了数据库, 后来用了一个st.set("anything"), 设置了一下属性, 然后后面又写了一个set("else anything"), 看Console中的数据库语句会这样写, update了anything, 然后又update了else anything, 也就是说flush()方法不在乎结果, 只在乎过程, 这个方法视情况而用.
@Before public void init() { System.out.println("Test开始之前执行"); Configuration configuration = new Configuration().configure(); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); session = sessionFactory.openSession(); transaction = session.beginTransaction(); }
@Test public void testClear() { System.out.println("clear方法的实现"); News news2 = new News(); News news3 = new News(); News news4 = new News(); news2 = (News)session.get(News.class, 360448); System.out.println(news2); // session.clear();//清除全部的缓存 session.evict(news2); news3 = (News)session.get(News.class, 360448); System.out.println(news3); session.evict(news3);//evict方法是清除指定的缓存 news4 = (News)session.get(News.class, 360448); System.out.println(news4); // News t = (News) session.get(News.class, 9); // System.out.println(t.getTitle()); // session.clear();//这里不clear只会执行一次sql语句,有clear会执行2次 // News t2 = (News) session.get(News.class, 9); // System.out.println(t2.getTitle()); }
@Test public void testFlush() { System.out.println("演示flush方法"); News t = (News) session.get(News.class, 9); //提交事务 transaction.commit(); //关闭会话和会话工厂 session.close(); sessionFactory.close(); t.setTitle("标题第五次"); //session.flush();//有flush会执行2次UPDAE,没有会只执行一次 //t.setTitle("标题第三次"); init(); session.saveOrUpdate(t); //使用saveOrUpdate方法重新转成持久化状态 transaction.commit(); //关闭会话和会话工厂 session.close(); sessionFactory.close(); }
clear()方法, 删除全部的缓存
evict()方法, 删除指定的缓存
flush()方法, 强制刷新
代码有点乱, 都是测试代码, 这个flush()方法需要标注一下, 比如一个实体类 something st 已经存入了数据库, 后来用了一个st.set("anything"), 设置了一下属性, 然后后面又写了一个set("else anything"), 看Console中的数据库语句会这样写, update了anything, 然后又update了else anything, 也就是说flush()方法不在乎结果, 只在乎过程, 这个方法视情况而用.
相关文章推荐
- Android客户端和服务端如何使用Token和Session
- java函数重载
- Linux内核构建系统之七
- webservice学习
- redis和phpredis扩展的安装
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别
- Redis源码解析:03字典
- 动态规划-最长公共子序列
- android网络编程 一(HttpURLConnection)
- Android中的Http通信(四)之多线程下载数据
- [leetcode]Find Peak Element
- (重点章节复习以及代码调整笔记)选择器:伪类和伪元素选择器(部分)
- UltraEdit 脚本 实现查找替换
- 【Tyvj1359】收入计划
- 百度贴吧走的太快 规则掉队值得深思
- hdu 4010
- vb.net——通过邮箱动态发送验证码实现完美注册
- Ubuntu 下 sublime text 3 java环境的编译
- 求图形面积,重心 HDU Lifting the Stone 1115
- TCP协议中的三次握手和四次挥手