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");
        Session session = SessionFactoryUtils.getSession(sf,
        SessionHolder sessionholder =
        TransactionSynchronizationManager.bindResource(sf, sessionholder);
    }

    public static SessionFactory bindTransaction() throws Exception {
        SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");
        Session session = SessionFactoryUtils.getSession(sf,
        session.beginTransaction();
        SessionHolder sessionHolder =
        TransactionSynchronizationManager.bindResource(sf, sessionHolder);
        return sf;
    }

    public static void beginTransaction() {
        SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");
        Session session = SessionFactoryUtils.getSession(sf,
        Transaction transaction = session.beginTransaction();
    }

    public static void commitTransaction() throws Exception {
        SessionFactory sf = (SessionFactory) SpringUtils.getSpringBean("sessionFactory");
        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");
        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");
        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);
    }
}

DaoFactory.java的更多相关文章

  1. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  2. 《Java从入门到精通》src9-25

    find . -name *.java |xargs  -i sh -c "echo {};cat {}" > ../all.java[op@TIM src]$ cat al ...

  3. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  4. java中的DAO设计模式

    创建数据库和表 sql语句: DROP TABLE IF EXISTS product; CREATE TABLE product( product_id varchar(20) NOT NULL, ...

  5. 使用java执行ffmpeg命令进行推流操作

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  6. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  7. Java实现视频网站的视频上传、视频转码、及视频播放功能(ffmpeg)

    视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...

  8. DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户

    1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据 ...

  9. JavaBean中DAO设计模式介绍(转)

    一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...

随机推荐

  1. MVC 简单发送邮件示例

    没啥好说的 直接上代码 @{ try { WebMail.SmtpServer = "smtp.qq.com";//SMTP邮件服务器 WebMail.SmtpPort = ;// ...

  2. [转][TFS] 禁止默认允许多人签出和强制解除签入签出锁

    转自:http://blog.xieyc.com/tfs-disable-multiple-check-out-and-force-to-undo-locking/ | 小谢的小站 [TFS] 禁止默 ...

  3. 简单使用Junit

    不需要配置,导入相应jar,然后在测试的方法上面加入注解@Test 执行的时候选择junit即可.

  4. xcode安装app

    安装 xcode 安装 xcode command line tool 检查是否安装 在终端中运行: xcrun simctl list 如果出现所有的 Device Types,则可以进行第3步 如 ...

  5. python练习程序(c100经典例12)

    题目: 判断101-200之间有多少个素数,并输出所有素数. for i in range(101,201): flag=0; for j in range(2,int(i**(1.0/2))): i ...

  6. Android 图文教学让你彻底理解activity启动模式

    我们首先从最简单的开始, standard 这个模式就是默认的模式,我们都知道 当你用这个模式时,每次发送一个intent,都会生成一个新的实例! 我写一个简单的例子: <?xml versio ...

  7. 【转】ios开发之AppDelegate

    创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件.   AppDelegate为何物?  AppDelegate为整个应用的一个代理,提供程序启动.退出等类似 ...

  8. Symfony2 学习笔记之插件格式

    一个bundle类似于其它框架中的插件,但是比插件表现更好.它跟其它框架最主要的不同是在Symfony2中所有东西都是bundle,包括核心框架功能和你写的所有应用程序代码.Symfony2中,bun ...

  9. 【原创】Linux下编译链接中常见问题总结

    前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...

  10. B-树和B+树

    B-树和B+树是一种平衡的多路查找树,它在文件系统中很有用.一颗m阶的b-树,或为空树,或满足下列特性的m叉树.1)树中每个节点至多有m棵子树2)若根结点不是叶子结点,则至少有两棵子树.3)除根之外的 ...