用過濾器實現OpenSessionInView模式:
public class HibernateSessionFilter implements Filter {
private Transaction tx;
private SessionFactory sessionFactory;
public void destroy() {
sessionFactory.close();
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
Session session = sessionFactory.getCurrentSession();
tx = session.beginTransaction();
chain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
if (tx.isActive()) {
tx.rollback();
}
}
}
public void init(FilterConfig arg0) throws ServletException {
sessionFactory = HibernateSessionFactory.getSessionFactory();
}
}
web.xml
<filter>
<filter-name>HibernateSessionFilter</filter-name>
<filter-class>com.util.HibernateSessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HibernateSessionFilter</filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>