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. KEYUSE

    typedef struct keyuse_t { TABLE *table; Item *val; /**< or value if no field */ table_map used_ta ...

  2. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同 ...

  3. Eclipse附加项目中的某个jar包的源码

    1.这里以web项目为例,打开项目应用的jar包:如下图 2.在想要引入源码的jar包上右键>属性(Properties)

  4. 如何在Android studio中同时打开多个工程? (转载)

    最近学习Android Studio,想同时打开两个Project.但是点击File->Open之后,原有的Project被关闭掉了.怎么在新的窗口中打开Project呢? 解决: 点击Help ...

  5. UVa 12265 (单调栈) Selling Land

    紫书上分析了很多很多,超详细,= ̄ω ̄= 每扫描一行可以计算一个height数组,表示从这块空地向上延伸多少块空地,而且这个数组可以逐行递推. 首先对于每一行来说维护一个单调栈,栈里放的是矩形的左上角 ...

  6. I.MX6 uSDHC SD card register

    /**************************************************************************** * I.MX6 uSDHC SD card ...

  7. dos保存adb logcat读取的Android信息

    /***************************************************************************** * dos保存adb logcat读取的A ...

  8. Windows Azure移动终端云服务管理(公测版)

    概览 云在远方,管理在您手中.在这个移动为先 云为先的世界,服务不再是基于请求才提供,而是主动来到身边方便您的模式了.我们最近将会陆续推出几大移动端利器帮助您随时随地管理您的云服务. 首批利器之中排名 ...

  9. [转载] ubuntu开机直接进入命令行模式

    最近安装了ubuntu12.04来使用,每次都进入unity界面再进入命令行很不方便. 不需要界面的话,可以通过设置来开机进入命令行模式. 今天提供两中比较好的方法.经本人测试两中方法都可使用. [1 ...

  10. oracle----sqlldr用法

    SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中.SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PAR ...