java hibernate事务处理_Hibernate中使用过滤器完成事务处理

实现的功能:   通过Hibernate的工具类得到一个全局唯一的SessionFactory对象

通过SessionFactory对象得到Session对象,然后开始一个新的事务

通过chain对象的doFilter()方法来完成业务处理

提交或者回滚事务.

HibernateFilter.java

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.hibernate.SessionFactory;

import cn.hxex.blog.hibernate.HibernateUtil;

public class HibernateFilter implements Filter {

private static Log log = LogFactory.getLog(HibernateFilter.class);

/**

* 过滤器的主要方法

* 用于实现Hibernate事务的开始和提交

*/

public void doFilter(ServletRequest request,

ServletResponse response,

FilterChain chain)

throws IOException, ServletException

{

// 得到SessionFactory对象的实例

SessionFactory sf = HibernateUtil.getSessionFactory();

try

{

// 开始一个新的事务

log.debug("Starting a database transaction");

sf.getCurrentSession().beginTransaction();

log.debug( "Request Path:\t" + ((HttpServletRequest)request).getServletPath() );

// Call the next filter (continue request processing)

chain.doFilter(request, response);

// 提交事务

log.debug("Committing the database transaction");

sf.getCurrentSession().getTransaction().commit();

}

catch (Throwable ex)

{

ex.printStackTrace();

try

{

// 回滚事务

log.debug("Trying to rollback database transaction after exception");

sf.getCurrentSession().getTransaction().rollback();

}

catch (Throwable rbEx)

{

log.error("Could not rollback transaction after exception!", rbEx);

}

// 抛出异常

throw new ServletException(ex);

}

}

/**

* Servlet过滤器的初始化方法

* 可以读取配置文件中设置的配置参数

*/

public void init(FilterConfig filterConfig) throws ServletException {}

/**

* Servlet的销毁方法

* 用于释放过滤器所申请的资源

*/

public void destroy() {}

}

posted on 2007-08-29 21:29 Ke 阅读(636) 评论(0)  编辑  收藏 所属分类: hibernate

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值