因为每次用增删改查时都需要用到hibernate的配置来生成session工厂进而生成session,比较麻烦,所以我们直接封装一个可以调用的类,需要的时候只需要调用即可。

新建一个HibernateUtil.java文件

package com.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static final SessionFactory factory = builderFactory();//新建一个session工厂,定义为常量直接构建出来
private static final ThreadLocal<Session> threadlock = new ThreadLocal<Session>();//构建一个线程锁,保证安全,实现单线程不被占用
private static SessionFactory builderFactory() {
Configuration config = new Configuration().configure();//读取hibernate配置
return config.buildSessionFactory();
} public static Session getSession(){
//获取线程锁中的session
Session session=threadlock.get();
if(session==null){
//如果为空,则表明会话没有,则可以新建会话
session=factory.openSession();
//把会话放到线程锁中
threadlock.set(session);
}
return session;
}
public static void closeSession(){
Session session=threadlock.get();
if(session!=null){
//不为空,则表明会话中有内容需要关闭
session.close();
//再将线程锁中的内容清空
threadlock.set(null);
}
}
}

测试一下:

package com.model;

import org.hibernate.Session;

public class TestFruit {
public static void main(String[] args){
Fruit f = new Fruit();
f.setIds("q001");
f.setName("草莓");
f.setPrice(20.0);
f.setSource("张店");
f.setNumbers(200);
f.setImage("hahh");
Session session = null;
try{
session=HibernateUtil.getSession();
session.beginTransaction();
session.save(f);
session.getTransaction().commit();
}catch(Exception ex){
ex.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtil.closeSession();
}
}
}

效果如下:

HibernateUtil.java文件是已经封装好的,可以直接将内容复制过来正常使用,方便快捷。

最新文章

  1. [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。
  2. 工厂食堂3D指纹考勤系统解决方案
  3. SP2013 SP1(kb28805502)补丁安装测试初体验
  4. Mongodb——GridFS
  5. DAY2 Python 标准库 -&gt; Getpass 模块 -&gt; 命令行下输入密码的方法.
  6. HDU 5128 The E-pang Palace(2014广州赛区现场赛B题 计算几何)
  7. openstack命令
  8. 百度云demo2
  9. 原 Linux搭建SVN 服务器2
  10. Bash简单介绍
  11. QT学习篇:入门(1)
  12. Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS
  13. tensorflow例子-【老鱼学tensorflow】
  14. 我的第一篇java笔记
  15. 17、php
  16. UVA1203 Argus
  17. Http的缓存机制
  18. MUI 选项卡切换+下拉刷新动态 完整实现一例
  19. java三大特性--多态(1)
  20. 第 8 章 容器网络 - 052 - overlay 如何实现跨主机通信?

热门文章

  1. 使用jmeter测试数据库性能
  2. Securityonion介绍
  3. Installing Apache, PHP, and MySQL on Mac OS X
  4. 个人作业-Alpha项目测试
  5. destoon登录后跳转到指定网址
  6. Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference
  7. Diff Two Arrays-freecodecamp算法题目
  8. C语言程序运行
  9. Golang 简单静态web服务器
  10. destoon 多表联合查询时出现解析错误,parse_str函数解析错误