通过过滤器来对hibernate的事务进行处理,实现起来比较方便!
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
}
}