標籤:com 開始 on() res pen 事務 hiberna ons request
import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.hibernate.Session;import org.hibernate.Transaction;import util.HibernateUtil;public class OpenSessionInViewFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 聲明對象 Session session = null; Transaction tx = null; // 異常處理 try { // 開啟session session = HibernateUtil.currentSession(); // 開始事務 tx = session.beginTransaction();
// 執行過濾 chain.doFilter(request, response); tx.commit(); // 提交 } catch (Exception e) { if(tx!=null)tx.rollback(); e.printStackTrace(); } finally { System.out.println("關閉session"); HibernateUtil.closeSession(); } } @Override public void init(FilterConfig arg0) throws ServletException { }}
最後更改web.xml檔案配置
<filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>filter.OpenSessionInViewFilter</filter-class> </filter><filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
hibernate之OpenSessionInView模式代碼