DaoFactory.java
2016-04-25 20:01
525 查看
package com; import com.isoftstone.fwk.dao.ActionDao; import com.isoftstone.fwk.dao.Dao; import com.isoftstone.fwk.util.SpringUtils; import java.sql.Connection; import org.apache.log4j.Logger; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.springframework.orm.hibernate3.SessionFactoryUtils; import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.transaction.support.TransactionSynchronizationManager; public class DaoFactory { public static Logger logger = Logger.getLogger(DaoFactory.class); public static Dao createActionDao() throws Exception { return ActionDao.newInstance(); } public static void bindSession() { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 Session session = SessionFactoryUtils.getSession(sf, true);//2 SessionHolder sessionholder = new SessionHolder(session);//4 TransactionSynchronizationManager.bindResource(sf, sessionholder);//5 } public static SessionFactory bindTransaction() throws Exception { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 Session session = SessionFactoryUtils.getSession(sf, true);//2 session.beginTransaction();//3 SessionHolder sessionHolder = new SessionHolder(session);//4 TransactionSynchronizationManager.bindResource(sf, sessionHolder);//5 return sf; } public static void beginTransaction() { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 Session session = SessionFactoryUtils.getSession(sf, true);//2 Transaction transaction = session.beginTransaction();//3 } public static void commitTransaction() throws Exception { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 commitTransaction(sf, true); } public static void commitTransaction(SessionFactory sf) throws Exception { commitTransaction(sf, true); } public static void commitTransaction(SessionFactory sf, boolean flag) throws Exception { Transaction transaction = null; Session session = null; Connection conn = null; try { SessionHolder sessionholder = (SessionHolder) TransactionSynchronizationManager.getResource(sf); if (sessionholder != null) { session = sessionholder.getSession(); if (flag) { transaction = session.getTransaction(); if (sessionholder != null) { conn = sessionholder.getSession().connection(); } boolean tt = session.connection().getAutoCommit(); if ((transaction != null) && (transaction.isActive()) && (!tt)) { transaction.commit(); transaction = null; } } } } catch (Exception exception) { if (flag) { transaction.rollback(); } exception.printStackTrace(); throw exception; } } public static void rollbackTransaction() { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 try { rollbackTransaction(sf); } catch (Exception e) { e.printStackTrace(); } } public static void rollbackTransaction(SessionFactory sessionfactory) throws Exception { Object obj = null; Session session = null; try { SessionHolder sessionholder = (SessionHolder) TransactionSynchronizationManager.getResource(sessionfactory); if (sessionholder != null) { session = sessionholder.getSession(); Transaction transaction = session.getTransaction(); transaction.rollback(); } } catch (Exception exception) { exception.printStackTrace(); throw exception; } } public static void unbindSession() throws Exception { SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");//1 try { Session session = SessionFactoryUtils.getSession(sf, true); unbindTransaction(sf); session.close(); } catch (Exception e) { e.printStackTrace(); } } public static void unbindTransaction(SessionFactory sf) throws Exception { TransactionSynchronizationManager.unbindResource(sf); } }
相关文章推荐
- Java修饰符的访问权限
- java double转string
- 我的Java后端书架 (2016年暮春3.0版)
- Java关键字之final
- Mixing JUnit, Hamcrest and Mockito: Explaining java.lang.NoSuchMethodError: org/hamcrest/Matcher.des
- 使用MyEclipse连接数据库
- springMVC与MyBatis整合
- Spring结合Quartz实现多任务定时调用
- Java基础(持续更新)
- IDEA中引入struts2时报错 ClassNotFoundException
- Java序列化(Serializable)与反序列化
- Spring4 hibernate4与strtus2的整合
- java web 连接数据库异常 Before start of result set
- MyEclipse连接MySQL
- JAVA内存模型
- spring-boot 初学一
- springIOC控制反转
- jdk 安装
- 浅谈Java IO
- java深拷贝和浅拷贝