`

Jdbc--事务

    博客分类:
  • jdbc
 
阅读更多

事务:
事务就是一件事情,这件事情可能由多个单元组成,这些单元要么全都成功,要么全都不成功。
事务的操作:
开启事务:
设置事务提交方式为手动:con.setAutoCommit(false);
设置回滚点:con.setSavepoint();
事务回滚:con.rollback();
事务提交:con.commit();

事务特性:
ACID
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)
事务前后数据的完整性必须保持一致。
隔离性(Isolation)
事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

脏读:一个事务读取到了另一个事务未提交数据
不可重复读:指多次读取的数据不一致(读取到了一个事务的提交数据)  强调update【指的是数据内容的变化】
虚读或幻读:指多次读取的数据不一致 强调insert 【指的是数据的数量的变化】

事务隔离级别:
1 Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)
2 Repeatable read:可避免脏读、不可重复读情况的发生。(可重复读)不可以避免虚读
3 Read committed:可避免脏读情况发生(读已提交)
4 Read uncommitted:最低级别,以上情况均无法保证。(读未提交)
Mysql数据库默认是  Repeatable read
Oracle数据库默认是read committed
设置事务的隔离级别:
MySQL中:Set session transaction isolation level read uncommitted;
jdbc中:
void setTransactionIsolation(int level)  throws SQLException
上述方法是Connection接口中的用于设置事务隔离级别的方法参数可以是以下
level - 以下 Connection 常量之一:
Connection.TRANSACTION_READ_UNCOMMITTED、
Connection.TRANSACTION_READ_COMMITTED、
Connection.TRANSACTION_REPEATABLE_READ 或
Connection.TRANSACTION_SERIALIZABLE。
(注意,不能使用 Connection.TRANSACTION_NONE,因为它指定了不受支持的事务。)

丢失更新:
两个事务对同一条记录进行操作,后提交的事务将先提交的事务的修改操作覆盖了。
方案一:悲观锁 (假设丢失更新一定会发生 ) ----- 利用数据库内部锁机制,管理事务
方案二:乐观锁 (假设丢失更新不会发生)------- 采用程序中添加版本字段解决        丢失更新问题

悲观锁又分成两种 
1.共享锁   可以在一条记录上添加多个共享锁   lock in share mode
2.排它锁   排它锁,它不能与其它锁共存,只要添加了排它锁的语句执行完毕后其他要执行此语句的语句才可以执行。
update操作默认添加排它锁 
for update【select * from account for update;】就可以添加排它锁
乐观锁:
它是使用版本字段来控制。
            create table product (
   id int,
   name varchar(20),
   updatetime timestamp
);
insert into product values(1,'冰箱',null);
update product set name='洗衣机' where id = 1;
当修改操作之前,再执行一次查询,得到time的时间,并且将此时间与之前的时间进行对比,若相等说明
之前没有其他事务对此数据进行操作,如果不相等就代表其他事务对此数据进行过了操作。

分享到:
评论

相关推荐

    shardingsphere-jdbc-4.1.1依赖包,shardingsphere-jdbc-4.1.1-lib

    在分布式环境下,ShardingSphere-JDBC提供了XATransaction、Seata AT和Saga等分布式事务解决方案,确保了跨库事务的一致性和原子性。这些方案能够应对复杂的业务逻辑,保证数据的完整性和一致性。 4. **数据加密...

    dbf-jdbc-wisecoders,JAVA 读写DBF文件工具包

    1. **JDBC接口**:`dbf-jdbc-wisecoders`通过提供一个类似于JDBC(Java Database Connectivity)的接口,让Java开发者可以使用他们熟悉的SQL查询来访问和操作DBF文件。这大大简化了代码编写,使得DBF文件的处理如同...

    hive-jdbc-1.1.0-cdh5.12.1 连接库 jar包

    Hive JDBC还支持多种特性,如预编译的`PreparedStatement`,事务处理,以及批处理等,提高了性能和安全性。对于大数据应用来说,Hive JDBC是一个强大而灵活的工具,能够帮助开发者轻松地将Hadoop集群的数据整合到...

    hive-jdbc-uber-2.6.5.0-292.jar驱动

    5. **事务管理**:虽然Hive本身不完全支持ACID事务,但驱动提供了部分事务管理能力。 6. **安全认证**:支持Kerberos等安全协议,确保数据访问的安全性。 7. **性能优化**:通过优化网络通信和数据传输,提高数据...

    Sqlite-jdbc-3.7.2.jar和sqlite-jdbc-3.20.1.jar上传,亲测可用

    在实际应用中,还需要考虑错误处理、事务管理、性能优化等高级话题。比如,为了提高性能,可以使用批处理(Batch Processing)来一次执行多个SQL语句,或者使用预编译的`PreparedStatement`来减少解析SQL的时间。...

    jdbc-helper-0.3.1

    《jdbc-helper-0.3.1:Google封装的高效JDBC工具详解》 在Java开发中,数据库操作是不可或缺的一部分,而JDBC(Java Database Connectivity)作为Java与数据库交互的标准接口,扮演着至关重要的角色。然而,原生的...

    sqljdbc_7.4.1.0_enu.tar.gz、mssql-jdbc-7.4.1.jre8.jar 等

    这个版本提供了对SQL Server的各种功能支持,包括但不限于连接、查询、事务处理、批处理等,并且遵循JDBC API标准,使得Java开发者可以方便地操作SQL Server数据库。 标签中的"sqlserverjdbc"是SQL Server JDBC驱动...

    gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_

    6. **Transactions and Connection Management**: 驱动程序会管理与Oracle数据库的连接,处理事务,确保数据的一致性和完整性。 7. **Error Handling and Logging**: 在遇到错误或异常时,驱动程序会提供相应的错误...

    jdbc-mysql-connector-j-8.0.31.jar jdbc-sqljdbc41.jar

    本话题将深入探讨两个关键的Java数据库连接器(JDBC)驱动,即`jdbc-mysql-connector-j-8.0.31.jar`(用于MySQL)和`jdbc-sqljdbc41.jar`(用于SQL Server),以及它们在JMeter中的应用。 首先,`jdbc-mysql-...

    SQL Server_JDBC驱动【mssql-jdbc-6.4.0.jre8.jar】.rar

    JDBC支持事务处理,这对于保证数据一致性至关重要。你可以使用`Connection`对象的`setAutoCommit(false)`来关闭自动提交,然后手动控制事务的提交和回滚: ```java conn.setAutoCommit(false); // 执行SQL操作... ...

    mysql-jdbc-5.1-6.0jar包综合

    4.事务处理:支持事务的开始、提交、回滚操作,确保数据的一致性和完整性。 5. 并发控制:支持多线程环境下的并发访问,保证数据安全。 接着,我们关注不同版本之间的差异。随着版本的升级,MySQL JDBC驱动通常会...

    jdbc-drivers.zip

    驱动文件通常命名为`postgresql-jdbc.jar`,提供了连接、查询、事务处理等功能。 2. **MySQL JDBC Driver (mysql)**:MySQL是另一个广泛应用的关系型数据库,它的JDBC驱动让Java开发者可以操作MySQL数据库。驱动...

    sharding-jdbc-example

    在现代的分布式数据库系统中,Sharding-JDBC作为一个轻量级的Java框架,为了解决大数据量下的性能瓶颈,提供了数据分片、读写分离、分布式事务等核心功能。本示例以"sharding-jdbc-example"为主题,涵盖了Spring-...

    当当开源sharding-jdbc-轻量级数据库分库分表中间件

    为了进一步提升产品的稳定性和功能性,Sharding-JDBC团队正在积极规划并实施后续的功能完善计划,包括但不限于读写分离、柔性分布式事务处理以及高可用性等功能的开发。 总之,Sharding-JDBC以其简单高效的设计理念...

    sqlite-jdbc-3.32.3.2.jar,支持mips64elloongarch64可

    除了上述基本操作,SQLite JDBC驱动还支持事务处理、存储过程、批量更新等高级特性。它使得在各种操作系统和硬件平台(包括mips64elloongarch64)上使用SQLite变得更加便捷,对于Java开发者来说,这是一个强大的工具...

    sqlite-jdbc-3.8.7.jar下载

    5. **事务管理**:SQLite支持事务处理,可以使用`Connection`对象的`setAutoCommit(false)`来开启手动提交模式,然后通过`commit()`和`rollback()`方法控制事务的提交或回滚。 6. **性能优化**:虽然SQLite是轻量级...

    shardingsphere-jdbc-5.0.0-beta依赖包

    ShardingSphere-JDBC,作为Apache ShardingSphere项目的一部分,是一个轻量级的Java框架,它无需任何中间件即可在现有数据库上实现数据分片、读写分离以及分布式事务。这个5.0.0-BETA版本的依赖包特别适用于那些不...

    clickhouse-jdbc-0.1.50d.zip

    在开发过程中,`clickhouse-jdbc`库还支持预编译的`PreparedStatement`,批量操作,以及事务管理等功能,这极大地提高了代码的安全性和效率。此外,为了优化性能,可以使用`clickhouse-jdbc`的批处理特性,一次性...

    Easysoft JDBC-ODBC Bridge_jdbc_java_odbc_database_methodcpo_

    - **事务支持**:提供了ACID(原子性、一致性、隔离性和持久性)级别的事务管理。 - **并发性**:支持多线程和并发连接,适用于高并发的应用场景。 - **诊断和监控**:提供详细的日志和性能统计,便于故障排查和系统...

    hive-jdbc-1.1.0驱动相关jar包

    5. 高级特性:支持事务、批处理、预编译语句等功能。 在动态加载Hive JDBC 1.1.0驱动时,我们需要确保包含所有必需的jar包。"test-hive1.1.0"可能是一个包含这些jar的目录或者压缩文件。通常,除了`hive-jdbc-1.1.0...

Global site tag (gtag.js) - Google Analytics