封装Hibernate框架中的session工厂   ,方便很多,免去了很多重复无用的代码

package com.maya.test;
import org.hibernate.*;
import org.hibernate.cfg.*; public class HibernateUtil { private static final SessionFactory factory=buildFactory(); //建一个session工厂,调用方法构建出
private static final ThreadLocal<Session> threadlock=new ThreadLocal<Session>(); //保证线程安全,构建一个线程锁,保证该线程未结束前不会被占用 public static SessionFactory buildFactory() {
Configuration config=new Configuration();
return config.buildSessionFactory();
} public static Session getSession(){
Session session=threadlock.get();//获取线程锁中的session
if(session==null){ //如果session是空的,打开一个session
session=factory.openSession();
}
threadlock.set(session); //将session放入线程锁中,保证该线程不会被干扰
return session;
} public static void closeSession(){ //该方法为关闭session,获取session 如果不为空,那么关闭,并且将线程锁更改为空
Session session=threadlock.get();
if(session!=null){
session.close();
threadlock.set(null);
}
} }

调用:

package com.maya.test;
import org.hibernate.*;
import org.hibernate.cfg.*; import com.maya.model.Family; public class FamilyTest { public static void main(String[] args){ Family fa=new Family();
fa.setName("小明");
fa.setFirm("召唤师峡谷");
fa.setInfoCode("p003"); Session session=HibernateUtil.getSession();//获取session
try{
session.beginTransaction(); session.save(fa); session.getTransaction().commit();
}
catch(Exception e){
session.getTransaction().rollback();
}
finally{
HibernateUtil.closeSession();
}
} }

最新文章

  1. git pull和git fetch的区别
  2. 用户 &#39;IIS APPPOOL\DefaultAppPool&#39; 登录失败。
  3. javascript event(事件对象)详解
  4. Windows下使用命令行设置ip地址的DNS服务器
  5. 建模算法(一)&mdash;&mdash;线性规划
  6. 将Android Studio工程导入到Eclipse中
  7. 统计英文文章中各单词的频率,打印频率最高的十个单词(C语言实现)
  8. 常见MD5加密解密值及免费解密网站
  9. 每周.NET前沿技术文章摘要(2017-06-21)
  10. Redis这些知识点,是必须知道的!
  11. 《java入门第一季》之面向对象(谈谈接口)
  12. python 去除html 超链接href 如何实现?
  13. CodeForce-955C
  14. Python练习-列表生成式-2018.11.30
  15. Scalable Object Detection using Deep Neural Networks译文
  16. Selenium WebDriver如何模拟复制和粘贴
  17. 【LeetCode】65. Valid Number
  18. 开源项目DataTimePicker实现时间和日期的选择
  19. Python day17 模块介绍1(time,random)
  20. 全解析jQuery插件开发!很好很强大!

热门文章

  1. php 模拟get和post提交方法[解决ajax跨域问题]
  2. 8148 8168 中移植live55 出现except rtsp 中途莫名的断流
  3. 查看Android.mk文件中的变量的值
  4. Frobenius inner product
  5. JS异错面试题
  6. 3.写一个hello world页面
  7. linux c编程:非阻塞I/O
  8. linux c编程:进程控制(三)_exec函数
  9. js与jquey的表达
  10. 33_为应用添加多个Activity与参数传递