Hibernate的简单封装Session(方便调用)
2024-09-05 12:34:56
因为每次用增删改查时都需要用到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文件是已经封装好的,可以直接将内容复制过来正常使用,方便快捷。
最新文章
- [原创]使用Gradle的插件EnIDE build的时候,输出的中文总是乱码。
- 工厂食堂3D指纹考勤系统解决方案
- SP2013 SP1(kb28805502)补丁安装测试初体验
- Mongodb——GridFS
- DAY2 Python 标准库 ->; Getpass 模块 ->; 命令行下输入密码的方法.
- HDU 5128 The E-pang Palace(2014广州赛区现场赛B题 计算几何)
- openstack命令
- 百度云demo2
- 原 Linux搭建SVN 服务器2
- Bash简单介绍
- QT学习篇:入门(1)
- Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS
- tensorflow例子-【老鱼学tensorflow】
- 我的第一篇java笔记
- 17、php
- UVA1203 Argus
- Http的缓存机制
- MUI 选项卡切换+下拉刷新动态 完整实现一例
- java三大特性--多态(1)
- 第 8 章 容器网络 - 052 - overlay 如何实现跨主机通信?