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. HDU 1158 Employment Planning

    又一次看题解. 万事开头难,我想DP也是这样的. 呵呵,不过还是有进步的. 比如说我一开始也是打算用dp[i][j]表示第i个月份雇j个员工的最低花费,不过后面的思路就完全错了.. 不过这里还有个问题 ...

  2. UVa 673 Parentheses Balance【栈】

    题意:输入一个包含"()"和"[]"的序列,判断是否合法 用栈来模拟,遇到"(",“[”就入栈,遇到')',']'就取出栈顶元素看是否匹配, ...

  3. python处理ajax请求

    先要起一个服务 server.py,可以支持python的cgi脚本. #!coding:utf8 from BaseHTTPServer import HTTPServer from CGIHTTP ...

  4. BZOJ 4571 美味

    又一部SCOI血泪史.... 唉. 就是在这棵树上一遍又一遍跑嘛. 以后不要直接求答案啊.要最后再异或起来. 要学习简单的代码风格. #include<iostream> #include ...

  5. Python [Leetcode 121]Best Time to Buy and Sell Stock

    题目描述: Say you have an array for which the ith element is the price of a given stock on day i. If you ...

  6. 【转】Android Interface的使用

    原文网址:http://www.3g-edu.org/Android_free/art115.htm Android应用程序采用Java语言编写,Java语法和C/C++有很大的相似性,但也有一些特别 ...

  7. 【转】Github轻松上手4-常用的git命令

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzih.html 附上一些git的常见命令: •    git remote add origin git ...

  8. PHP中设置、使用、删除Cookie方法

    1.设置Cookie PHP用SetCookie函数来设置Cookie.必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容 ...

  9. DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现

    在上一篇文章<DDoS攻防战 (二) :CC攻击工具实现与防御理论>中,笔者阐述了一个防御状态机,它可用来抵御来自应用层的DDoS攻击,但是该状态机依赖一个能应对大量条目快速增删的ip黑白 ...

  10. 企业网站DDOS防护解决方案

    随着网络的普及,越来越多的企业开始了上网之路,由于网络安全知识的欠缺,很多企业以为做一个网站就 等于 网络化了,于是狠花血本请专业网络公司制作出各种漂亮的网页.但做完才发现,网络上的各种漏洞的DDOS ...