JDBC中事务的处理:
connection提供了事务的处理方法
1、调用setAutoCommit()方法,将值设置为false--开启事务
2、事务完成提交用commit();回滚rollback();
部分代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
Connection connection=null;
try {
//1.获取连接
connection =JdbcUtils.getConnection();
//2.开启事务
connection.setAutoCommit(false);
//3.利用ThreadLocal把当前连接和当前线程绑定
ConnectionBind.getInstance().bind(connection);
//4.把请求转给目标Servlet
chain.doFilter(request, response);
//5.提交事务
connection.commit();
} catch (Exception e) {
//6.回滚事务
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
//重定向到错误页面
HttpServletRequest request2=(HttpServletRequest) request;
HttpServletResponse response2=(HttpServletResponse) response;
response2.sendRedirect(request2.getContextPath()+"/error-1.jsp");
}finally{
//7.解出绑定
ConnectionBind.getInstance().remove();
//8.关闭数据库连接
JdbcUtils.releaseConnection(connection);
}
}
filter和servlet类似,要在web.xml中配置
3、JDBC3.0中引入了savePoint(保存点),可以回滚到之前的保存点上
本着能ctrl+c-->ctrl+v就不动手的原则,我把图截过来了
JDBC3.0特性: https://www.ibm.com/developerworks/cn/java/j-jdbcnew/