zoukankan      html  css  js  c++  java
  • clear(), evict(), 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()方法不在乎结果, 只在乎过程, 这个方法视情况而用. 

  • 相关阅读:
    解决云服务器ECS,windows server 2012不能安装SQL Server 2012,不能安装.NET Fromework 3.5
    html5中checkbox的选中状态的设置与获取
    sql server 韩文查询匹配失败
    管理nuget程序包中搜索不到任何程序包
    ftp下出现“当前的安全设置不允许从该位置下载文件”提示
    windows server 2012 下IIS8.5关于“ 配置错误 不能在此路径中使用此配置节”的解决办法
    服务器升级后访问网站资源返回404
    centos7yum的更新与优化
    linux(centos7)命令提示符优化
    检查vmware虚拟软件服务是否开启?
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/5137751.html
Copyright © 2011-2022 走看看