Hibernate的loadsession类
来源:互联网 发布:淘宝卖医疗器械 编辑:程序博客网 时间:2024/05/18 03:51
http://blog.csdn.net/sunyujia/article/details/2549564
ThreadLoal的变量设session
是获取/创建时最迟将Threadlocal设为session的对象保护起来
提交/回滚时最早将Threadlocal的对象set成null
package Load;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class loadsession {
static Session session=null;
private static ThreadLocal sessionThread=new ThreadLocal();//存hibernate的session
private static ThreadLocal transactionThread=new ThreadLocal();//存事务
static SessionFactory sf=null;
public static Session getsession()
{
Configuration conf=new Configuration().configure();
sf=conf.buildSessionFactory();
session=(Session) sessionThread.get();
if(session==null){
session=sf.openSession();}
else{
session=sf.getCurrentSession();
}
sessionThread.set(session);
return session;
}
public static void closesession()
{
session=(Session) sessionThread.get();
if(session!=null){
session.flush();
session.close();
sf.close();
sessionThread.set(null);
}
}
//获取当前session的事务
public static Transaction transaction()
{
Transaction trans=(Transaction) transactionThread.get();
if(trans==null)
{
trans=session.beginTransaction();
transactionThread.set(trans);
}
return trans;
}
//提交事务
public void comitTransaction()
{
Transaction trans=(Transaction) transactionThread.get();
transactionThread.set(null);
if(trans!=null)
{
trans.commit();
}
}
//回滚当前事务
public void rollbackTransaction()
{
Transaction tx=(Transaction) transactionThread.get();
transactionThread.set(null);
if(tx!=null)
{
tx.rollback();
}
}
}
测试 类
- public static void main(String[] args) throws Exception {
- HibernateUtil.initSessionFactory(new File(Test.class.getClassLoader()
- .getResource("hibernate.cfg.xml").getFile()));
- Session session = HibernateUtil.getSession();
- HibernateUtil.transaction();
- User u = new User();
- u.setName("test");
- session.save(u);
- HibernateUtil.commitTransaction();
- HibernateUtil.closeSession();
- }
阅读全文
0 0
- Hibernate的loadsession类
- hibernate常用的类
- Hibernate 的工具类
- hibernate的工具类
- Hibernate的工具类
- hibernate通用的类
- Hibernate的工具类
- hibernate 的Configuration类
- hibernate的Configuration类
- hibernate的工具类
- 【hibernate】hibernate的原理
- 【Hibernate】hibernate的cache
- hibernate-hibernate的配置
- Hibernate的配置和Hibernate的持久化类
- Hibernate配置相关的类
- Hibernate的工具类HibernateUtils
- 改进的hibernate工具类
- hibernate的数据库连接dao类
- 指令集
- git命令
- 第四章 Controller接口控制器详解(2)
- Java的跨平台原理
- 通过4.4httpclient访问http和调用https
- Hibernate的loadsession类
- 比较excel差异的脚本
- 有效解决Execution failed for task ':app:clean'. > Unable to delete directory问题
- LinkedHashMap的实现原理
- 权利游戏game of thornes第一季观后摘抄
- PCM数据格式
- 信号屏蔽pending
- 运算符重载(转载)
- HashSet的实现原理