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 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() {
- }
- }
转载于:https://blog.51cto.com/huqianhao/954267