JDBC入门中,关于事务还是有几点疑问。

JDBC入门中,关于事务还是有几点疑问。

1、关于断电是不是这样理解?

(1)如果Java服务器断电、MySQL不断,Java没执行到conn.commit()、conn.rollback()——则数据库什么都不做;

(2)如果Java服务器断电、MySQL不断,Java执行到conn.commit()、conn.rollback()——则数据库正常调用redo日志提交、undo日志回滚;

(3)如果Java服务器不断电、MySQL断,Java执行到conn.commit()、conn.rollback()——则数据库正常调用redo日志提交、undo日志回滚。


2、关于事务开启是不是这样理解?

(1)1条查询,要开事务——因为可能有其他事务做修改;

(2)多条查询,要开事务——因为可能有其他事务做修改;

(3)1条修改,要开事务——因为涉及修改;

(4)多条修改,要开事务——因为涉及修改。


3、关于封锁级别是不是这样理解?

(1)read uncommitted——购票,用了这种级别就不会出现其他数据异常

(2)read committed——转账,用了这种级别就不会出现其他数据异常

(3)repeatable read——购物,用了这种级别就不会出现其他数据异常

(3)serializable——没用


4、MySQL封锁级别作用域是新建的一个查询页面,其他新建的查询页面无效;那在Java里设置的作为范围是什么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、添加如下代码设置事务的隔离级别为READ_UNCOMMITTED

注:Read uncommitted是mysql innodb引擎的最低事务隔离级别。并不能保证并发情况下的数据的安全性,所以不建议使用~

https://img1.sycdn.imooc.com//climg/6131ccea09e6ed6f08830082.jpg

2、如下这里已经传入sql了

https://img1.sycdn.imooc.com//climg/6131cd4b0931585106190093.jpg

祝学习愉快~

  • 童真模式启动 提问者 #1

    这一调只是这一个方法最低吧,其他方法应该还是可以根据须要设置吧?比如:read uncommitted——用在购票,read committed——用在转账,repeatable read——用在购物之类的 。

    2021-09-03 17:48:19
  • 同学你好,是的

    祝学习愉快~

    2021-09-03 18:33:17
好帮手慕小尤 2021-09-02 15:58:31

同学你好,1、同学这么理解是可以的。

2、同学这么理解是可以的。

3、同学这么理解是正确,serializable是进行序列化,事务会逐一执行。

4、在Java中连接的是一个数据库,使用锁不需要设置作用域,直接使用就可以了。

祝学习愉快!

  • 提问者 童真模式启动 #1

    4、SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;之前这个语句能用在下面代码里不?

    Properties properties =new Properties();
    String propertyFile=QueryCommand.class.getResource("/druid-config.properties").getPath();
    propertyFile=new URLDecoder().decode(propertyFile,"UTF-8");
    properties.load(new FileInputStream(propertyFile));
    DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
    conn=dataSource.getConnection();
    conn.setAutoCommit(false);
    QueryRunner qr=new QueryRunner();
    String sql="DELETE FROM news WHERE id=?";
    int count=qr.update(conn,sql,new Object[]{id});
    if(count==1)
    {
    System.out.println("删除成功");
    }


    2021-09-02 22:08:35
  • 同学你好,Read uncommitted是mysql innodb引擎的最低事务隔离级别。并不能保证并发情况下的数据的安全性,所以不建议使用~

    注:建议同学遇到代码型的题目可以先在本地自己测试一下!

    祝学习愉快~

    2021-09-03 11:10:10
  • 具体应该怎么放?之前这句话在MySQL是放在“start transaction;”之前的,Java这里“qr.update(conn,sql,new Object[]{id});”才能传入SQL啊


    2021-09-03 12:55:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师