首页 / 缓存 / Hibernate二级缓存配置
Hibernate二级缓存配置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Hibernate二级缓存配置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4547字,纯文字阅读大概需要7分钟。
内容图文
实体类
1 package cn.happy.entity; 2 3 public class Emp { 4 private Integer empNo; 5 private String empName; 6 public Integer getEmpNo() { 7 return empNo; 8 } 9 public void setEmpNo(Integer empNo) { 10 this.empNo = empNo; 11 } 12public String getEmpName() { 13return empName; 14 } 15publicvoid setEmpName(String empName) { 16this.empName = empName; 17 } 18192021 }
工具类
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(); 9privatestatic Configuration cf; 10privatestaticfinal SessionFactory factory; 11static{ 12try { 13 cf=new Configuration().configure(); 14 factory=cf.buildSessionFactory(); 15 } catch (Exception e) { 16thrownew ExceptionInInitializerError(e); 17 } 18 } 19publicstatic Session getSession() 20 { 21//sessionTL的get()方法根据当前线程返回其对应的线程内部变量, 22//也就是我们需要的Session,多线程情况下共享数据库连接是不安全的。 23//ThreadLocal保证了每个线程都有自己的Session。24 Session session = (Session)sessionTL.get(); 25//如果session为null,则打开一个新的session26if (session==null) { 27//创建一个数据库连接对象session28 session=factory.openSession(); 29//保存该数据库连接session到ThreadLocal中。30 sessionTL.set(session); 3132 } 33//如果当前线程已经访问过数据库了, 34//则从sessionTL中get()就可以获取该线程上次获取过的数据库连接对象。35return session; 36 } 37/**38 * 关闭Session 39*/40publicstaticvoid closeSession() 41 { 42 Session session =(Session)sessionTL.get(); 43 sessionTL.set(null); 44 session.close(); 45 } 4647 }
测试类
package cn.happy.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.happy.entity.Emp; import cn.happy.util.HibernateUtil; public class STest { Transaction tx; Session session; Transaction tx2; Session session2; @Test public void testBulk(){ session = HibernateUtil.getSession(); tx=session.beginTransaction(); Emp emp = (Emp)session.get(Emp.class, 1); System.out.println(emp); tx.commit(); HibernateUtil.closeSession(); System.out.println("==================="); session2 = HibernateUtil.getSession(); tx2=session2.beginTransaction(); Emp emp2 = (Emp)session2.get(Emp.class, 1); System.out.println(emp2); tx2.commit(); HibernateUtil.closeSession(); } }
小配置
<?xml version=‘1.0‘ encoding=‘utf-8‘?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.happy.entity"> <class name="Emp" table="Emp"> <cache usage="read-write"/> <id name="empNo" type="int" column="EMPNO"> <generator class="native"> </generator> </id> <property name="empName" type="string" column="EMPNAME"/> </class> </hibernate-mapping>
大配置
<? xml version=‘1.0‘ encoding=‘utf-8‘ ?> <! DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" > < hibernate-configuration > < session-factory > < property name ="connection.driver_class" >oracle.jdbc.OracleDriver</property><property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property><property name="connection.username">zc</property><property name="connection.password">zc</property><!-- 输出所有 SQL 语句到控制台。 --><property name="hibernate.show_sql">true</property><!-- 配置Hibernate.cfg.xml开启二级缓存。 --><property name="hibernate.cache.use_second_level_cache">true</property><!-- 配置二级缓存的供应商 --><property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property><!-- 在 log 和 console 中打印出更漂亮的 SQL。 --><property name="hibernate.format_sql">true</property><!-- 自动生成数据表,update/create --><property name="hbm2ddl.auto">update</property><!-- 方言 --><property name="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</property><!-- 关联小配置 --><mapping resource="cn/happy/entity/Emp.hbm.xml"/><class-cache usage="read-write" class="cn.happy.entity.Emp"/></session-factory></hibernate-configuration>
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;}
}
原文:http://www.cnblogs.com/1And0/p/5841829.html
内容总结
以上是互联网集市为您收集整理的Hibernate二级缓存配置全部内容,希望文章能够帮你解决Hibernate二级缓存配置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。