⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernatefilterlong.java

📁 webwork in action 源码
💻 JAVA
字号:
package org.hibernate.auction.persistence;import net.sf.hibernate.Session;import org.apache.commons.logging.*;import javax.servlet.*;import javax.servlet.http.*;import java.io.IOException;/** * A servlet filter that disconnects and reconnects a Hibernate Session for each request. * <p> * Use this filter for the <b>session-per-application-transaction</b> pattern * with a <i>Long Session</i>. Don't forget to demarcate application transactions * in your code, as described in Hibernate in Action. * * @see HibernateUtil * @author Christian Bauer <christian@hibernate.org> */public class HibernateFilterLong		implements Filter {	private static final String HTTPSESSIONKEY = "HibernateSession";	private static Log log = LogFactory.getLog(HibernateFilterLong.class);	public void init(FilterConfig filterConfig) throws ServletException {		log.info("Servlet filter init, now disconnecting/reconnecting a Session for each request.");	}	public void doFilter(ServletRequest request,						 ServletResponse response,						 FilterChain chain)			throws IOException, ServletException {		// Try to get a Hibernate Session from the HttpSession		HttpSession userSession =				((HttpServletRequest) request).getSession();		Session hibernateSession =				(Session) userSession.getAttribute(HTTPSESSIONKEY);		if (hibernateSession != null)			HibernateUtil.reconnect(hibernateSession);		// If there is no Session, the first call to		// HibernateUtil.beginTransaction in application code will open		// a new Session for this thread.		try {			chain.doFilter(request, response);			// Commit any pending database transaction.			HibernateUtil.commitTransaction();		} finally {			// TODO: The Session should be closed if a fatal exceptions occurs			// No matter what happens, disconnect the Session.			hibernateSession = HibernateUtil.disconnectSession();			// and store it in the users HttpSession			userSession.setAttribute(HTTPSESSIONKEY, hibernateSession);		}	}	public void destroy() {}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -