[求助前輩高人]使用Filter實現執行緒生命週期內hibernate Session的管理

Q088發表於2006-04-05
Session採用Threadlocal管理
這個過濾方法是http://hibernate.org/43.html看來的

	public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
	try {
        
            HibernateSessionFactory.getCurrentSession().beginTransaction();
          
            chain.doFilter(request, response);
        
            HibernateSessionFactory.getCurrentSession().getTransaction().commit(); 
            
        } catch (Throwable ex) {
        	HibernateSessionFactory.getCurrentSession().getTransaction().rollback();
        }finally{
        	HibernateSessionFactory.closeSession();
        }
}

我也用了Strust框架
以下是我的web.xml配置,過濾名為action的servlet

	<filter>
		<filter-name>Hibernate Session Request Filter</filter-name>
		<filter-class>com.llw.filter.HibernateSessionRequestFilter</filter-class>
	</filter>	
	<filter-mapping>
		<filter-name>Hibernate Session Request Filter</filter-name>
		<servlet-name> action </servlet-name>	
	</filter-mapping>

執行時,每個請求都能進行一次過濾,開啟事務處理,提交,再關閉session
可是,我有的請求只是簡單的頁面跳轉而已,它也過濾
這樣無論什麼請求都開啟一次session,會不會浪費效能,或者發生其他什麼問題
我在好多地方搜尋過,可是實在不知道這個問題用什麼關鍵字搜,怎麼搜都沒找到一點相關的
各為老大有什麼辦法能解決?

相關文章