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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 全局Filter 用于自动进行Session和事务的处理
*
* @author Administrator
*
*/
public class HibernateFilter implements Filter {
// 初始化日志对象
private static Log log = LogFactory.getLog(HibernateFilter.class);
public void init(FilterConfig config) throws ServletException {
log.info("servlet filter init.now opening/closing a Session for each request.");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
//开始一个新的事务,(在这个方法中会默认创建一个新的Session)
HibernateUtil.beginTransaction();
//进行事务处理
chain.doFilter(request, response);
//提交事务
HibernateUtil.commitTransaction();
} catch (ServletException se) {
log.debug("Rolling back the database transaction.");
//回滚事务,并关闭Session
HibernateUtil.rollbackTransaction();
throw se;
}catch (IOException e) {
log.debug("Rolling back the database transaction.");
// 回滚事务,并关闭Session
HibernateUtil.rollbackTransaction();
throw e;
}finally{
//关闭Session
HibernateUtil.closeSession();
}
}
public void destroy() {
}
}
Hibernate过滤器
最新推荐文章于 2015-02-21 10:41:00 发布