通过过滤器来对hibernate的事务进行处理,实现起来比较方便! 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.hibernate.Session; import org.hibernate.Transaction; import com.framework.HibernateSessionFactory; public class TransactionFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { Session session = null; Transaction tx = null; try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); chain.doFilter(request, response); tx.commit(); } catch(Exception e) { e.printStackTrace(); if(tx != null) { tx.rollback(); } request.getRequestDispatcher("/message.jsp?message=系统错误").forward(request, response); } finally { if(session != null) { session.close(); } } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } <filter> <filter-name>HibernateSession</filter-name> <filter-class>com.eetrust.filter.HibernateSessionFilter</filter-class> </filter> <filter-mapping> <filter-name>HibernateSession</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>