java transaction使用_java-transaction事件

本文介绍了Java中事务的使用,包括关闭自动提交、手动提交和回滚事务。通过代码示例展示了如何在数据库操作中应用事务,同时讨论了事务的四大特性:原子性、一致性、隔离性和持久性。还提到了不同隔离级别下的安全隐患,如脏读、不可重复读和幻读,并给出了MySQL和Oracle的默认隔离级别。最后,文章提及了解决事务安全隐患的方法,如悲观锁和乐观锁。
摘要由CSDN通过智能技术生成

/*

########事务&数据库连接池&DBUtils

######事务

> Transaction 其实指的一组操作,里面包含许多个单一的逻辑。

只要有一个逻辑没有执行成功,那么都算失败。 所有的数据都回归到最初的状态(回滚)

####为什么要有事务?

> 为了确保逻辑的成功。 例子: 银行的转账。

###使用命令行方式演示事务。

* 开启事务

start transaction;

* 提交或者回滚事务

commit; 提交事务, 数据将会写到磁盘上的数据库

rollback ; 数据回滚,回到最初的状态。

1. 关闭自动提交功能。

c45667ad9dbce29ff181ce2652195b5d.png

2. 演示事务

46bb4b95bd12f8b48bae0a4f1e01b266.png

#####使用代码方式演示事务

> 代码里面的事务,主要是针对连接来的。

>

>

>1. 通过conn.setAutoCommit(false )来关闭自动提交的设置。

>2. 提交事务 conn.commit();

>3. 回滚事务 conn.rollback();

//注意当数据库不支持回滚的时候有如下原因

* 1.数据库引擎不是innodb 而是myisam,不支持事务回滚。

* 2.在rollback之前 已经通过connection.commit 提交改动 无法回滚

* 3.mysql默认create drop alter 等涉及到表修改,会隐式结束当前会话中的任何活动事务,直接提交,无法回滚。

@Test

public void testTransaction(){

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

conn = JDBCUtil.getConn();

//连接,事务默认就是自动提交的。 关闭自动提交。

conn.setAutoCommit(false);

String sql = "update account set money = money - ? where id = ?";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值