码迷,mamicode.com
首页 > 其他好文 > 详细

clear(), evict(), flush()三种方法的用法实例

时间:2016-01-17 21:27:10      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

先贴代码:

 

    @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()方法不在乎结果, 只在乎过程, 这个方法视情况而用. 

clear(), evict(), flush()三种方法的用法实例

标签:

原文地址:http://www.cnblogs.com/wgbs25673578/p/5137751.html

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