Java学习笔记3-JDBC事务管理
2016-04-06 01:21
585 查看
数据库中的事务就是一组数据库操作,具有几个特点:
1. 原子性,完整操作不可分割。
2. 一致性,数据保持一致。
3. 隔离性,并发事务彼此隔离,意思就是我做的时候,别人不能做,我做完了,别人才能做。
4. 永久性,对数据库的修改是永久保持的。
其中的原子性,就是把一组数据库操作当作一个完整不可分割的操作,举个例子,银行账户A向银行账户B转账,A中的金额减少,B中的金额增加,这两个操作必须当作一个完整不可分割的操作执行。
JDBC对事务管理的支持:
commit()提交操作
rollback()回滚操作
setAutoCommit(false)禁止自动提交
事务默认是自动提交的,在进行事务管理时,调用setAutoCommit()禁止自动提交,当事务操作失败或者出现异常时,调用rollback()回滚。
下面是慕课网上面的一个例子,我直接拿过来用了:
在执行上面的程序时,我们会发现,由于字符串error为null, 导致的空指针异常,这时候数据库执行回滚操作,保证了数据的正确。
以上就是JDBC事务管理的一个简单例子。
1. 原子性,完整操作不可分割。
2. 一致性,数据保持一致。
3. 隔离性,并发事务彼此隔离,意思就是我做的时候,别人不能做,我做完了,别人才能做。
4. 永久性,对数据库的修改是永久保持的。
其中的原子性,就是把一组数据库操作当作一个完整不可分割的操作,举个例子,银行账户A向银行账户B转账,A中的金额减少,B中的金额增加,这两个操作必须当作一个完整不可分割的操作执行。
JDBC对事务管理的支持:
commit()提交操作
rollback()回滚操作
setAutoCommit(false)禁止自动提交
事务默认是自动提交的,在进行事务管理时,调用setAutoCommit()禁止自动提交,当事务操作失败或者出现异常时,调用rollback()回滚。
下面是慕课网上面的一个例子,我直接拿过来用了:
public String transaction(Account from, Account to, double amount) throws Exception{ Connection conn = DBUtil.getConnection(); //禁止自动提交 conn.setAutoCommit(false); try{ AccountDao accountDao = new AccountDao(); TransDao transDao = new TransDao(); from.setAmount(from.getAmount() - amount); accountDao.update(from); //如果在期间出现由于其他程序引起的异常,导致下面的语句没有执行 String error = null; error.split(" "); to.setAmount(to.getAmount() + amount); accountDao.update(to); TransInfo info = new TransInfo(); info.setSourceAccount(from.getAccount()); info.setSource_id(from.getId()); info.setDestinationAccount(to.getAccount()); info.setDestinationId(to.getId()); info.setAmount(amount); transDao.insert(info); //手动提交操作 conn.commit(); return "success"; }catch(Exception e){ //回滚操作 conn.rollback(); e.printStackTrace(); return "false"; } }
在执行上面的程序时,我们会发现,由于字符串error为null, 导致的空指针异常,这时候数据库执行回滚操作,保证了数据的正确。
以上就是JDBC事务管理的一个简单例子。
相关文章推荐
- Java String.split()用法小结
- springmvc的配置
- Win7下安装配置Java
- 疯狂javaee jsp自定义带属性标签访问数据库java.lang.NullPointerException
- springMVC初探
- SpringMVC学习记录(五)--表单标签
- eclipse安装hibernate
- java-lang-OutOfMemoryError-PermGen-space
- 在VPS上部署javaweb应用
- java原生的zip压缩与解压缩实现
- Intellij Maven创建SpringMVC 框架
- Java synchronized详解
- java 格式化输出
- springmvc
- 我理解的--java备忘录模式
- 最新SpringMVC框架搭建入门教程
- 编码方式获取Spring中PropertyPlaceholderConfigurer的属性
- Spring源代码解析第一篇(IOC容器)
- 3.4Java基本类型转换
- spring面向切面编程