设置事务管理:
连接对象.setAutoCommit(boolean)【当参数为true时,代表允许自动提交(事务管理是关闭的,每一条命令都会自动提交);当为false时,代表不允许自动提交,命令会在执行commit之后再统一提交(开启事务管理的)】
提交事务:
连接对象.commit()
回滚事务:
连接对象.rollback()
例子:
以银行转账为例,张三转给李四100元,执行事务后,如果运行出错将不会提交数据到数据库:
补充:
- 有些时候,在开发中是不会把两个操作放到一个地方的(在Javaweb中开发中存在service层和dao层。可以这么说,servlet是饭店前台,service层就是包厢里点菜的服务员(客户需要什么菜,他负责告诉后厨),dao层就是真正做菜的后厨(dao层通常是数据库方面的操作)。服务员一次性把需要的菜告诉后厨),这样耦合性较高,通常需要把它们放到单独的地方去(就好比一个大厨做好几样菜会很忙,通常都会分工好),比如加钱是一个函数,减钱是一个函数。把他们分开后,两个函数之间的Connection不同的话,就会无法统一进行事务管理。通常有两个解决方法:1.把同一个Connection对象传给这两个参数。2.利用Threadlocal类,把Connection对象存进去,两个要用的时候再取,取的是同一个对象。【这里可能不容易理解,只是做个提醒,可以不理解。】