博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中"二级缓存"配置
阅读量:6441 次
发布时间:2019-06-23

本文共 4210 字,大约阅读时间需要 14 分钟。

实体类 :

 

1  package cn.happy.entity;  2  public class Emp { 3      private Integer empNo;      4       private String empName; 5      public Integer getEmpNo() { 6          return empNo; 7      } 8      public void setEmpNo(Integer empNo) { 9          this.empNo = empNo;10      }11      public String getEmpName() {12          return empName;13      }14     public void setEmpName(String empName) {15         this.empName = empName;16      }17  }

 

 

工具类:

1 package cn.happy.util; 2  3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6  7 public class HibernateUtil { 8     private static final ThreadLocal sessionTL=new ThreadLocal(); 9     private static Configuration cf;10     private static final SessionFactory factory;11     static{12         try {13             cf=new Configuration().configure();14             factory=cf.buildSessionFactory();15         } catch (Exception e) {16             throw new ExceptionInInitializerError(e);17         }18     }19     public static Session getSession()20     {    21         //sessionTL的get()方法根据当前线程返回其对应的线程内部变量,22                 //也就是我们需要的Session,多线程情况下共享数据库连接是不安全的。23                 //ThreadLocal保证了每个线程都有自己的Session。24         Session session = (Session)sessionTL.get();25         //如果session为null,则打开一个新的session26         if (session==null) {27             //创建一个数据库连接对象session28             session=factory.openSession();29             //保存该数据库连接session到ThreadLocal中。30             sessionTL.set(session);31             32         }33         //如果当前线程已经访问过数据库了,34                 //则从sessionTL中get()就可以获取该线程上次获取过的数据库连接对象。35                 return session; 36     }37     /**38      * 关闭Session39      */40     public static void closeSession()41     {42         Session session =(Session)sessionTL.get();43         sessionTL.set(null);44         session.close();45     }46 47 }

测试类:

1 package cn.happy.test; 2  3 import org.hibernate.Session; 4 import org.hibernate.Transaction; 5 import org.junit.Test; 6  7 import cn.happy.entity.Emp; 8 import cn.happy.util.HibernateUtil; 9 10 public class STest {11     Transaction tx;12     Session session;13     Transaction tx2;14     Session session2;15      @Test16        public void testBulk(){17             session = HibernateUtil.getSession();18             tx=session.beginTransaction();19            Emp emp = (Emp)session.get(Emp.class, 1);20            System.out.println(emp);21            tx.commit();22            HibernateUtil.closeSession();23            System.out.println("===================");24            session2 = HibernateUtil.getSession();25             tx2=session2.beginTransaction();26            Emp emp2 = (Emp)session2.get(Emp.class, 1);27            System.out.println(emp2);28            tx2.commit();29            HibernateUtil.closeSession();30        }31     }

小配置:

1 
2 5
6
7
8
9
10
11
12
13
14

大配置:

1 
2 5
6
7
oracle.jdbc.OracleDriver
8
jdbc:oracle:thin:@localhost:1521:orcl
9
zc
10
zc
11
12
true
13
14
true
15
16
org.hibernate.cache.EhCacheProvider
17 18
19
true
20
21
update
22
23
org.hibernate.dialect.Oracle10gDialect
24
25 26
27
28
29

Jar包导入:

package cn.happy.entity;

  public class Emp {

    private Integer empNo;

    private String empName;

    public Integer getEmpNo() {return empNo;}

    public void setEmpNo(Integer empNo) {this.empNo = empNo;}

    public String getEmpName() {return empName;}

    public void setEmpName(String empName) {this.empName = empName;}

  }

 

转载于:https://www.cnblogs.com/Zhangmin123/p/5842945.html

你可能感兴趣的文章
刷前端面经笔记(九)
查看>>
针对前端开发可重用组件并发布到NPM
查看>>
Android组件化探索与实践
查看>>
开发笔记2 | Java 代码规约第1条
查看>>
Vue.js 子组件的异步加载及其生命周期控制-------异步加载子组件,子组件的生命周期控制过程不一样...
查看>>
编写可维护的JavaScript
查看>>
高效的CSS代码(2)
查看>>
React prop类型检查与Dom
查看>>
jQuery Ajax
查看>>
朱兰的质量三部曲——《可以量化的管理学》
查看>>
丰田生产方式和TOC工序切换时间的解决
查看>>
Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
查看>>
2017年勒索软件、物联网攻击将继续肆虐
查看>>
用友网络董事长王文京为何出现在乌镇大会中?
查看>>
大学团队打造手语翻译机器人,完整安装下来需要149个小时
查看>>
Wireshark抓包分析/TCP/Http/Https及代理IP的识别
查看>>
不同包下,相同数据结构的两个类进行转换
查看>>
软件安装(linux)
查看>>
TeamPlain for VSTS - Web Access for Team System-TFS 跨平台的客户端
查看>>
面对前车之鉴的AR,现在的VR要做些什么?
查看>>