Bootstrap

面试题--事务

1.什么是事务?

把数据库的各种操作封装到一个事务中,这些操作要么都执行要么都不执行。

2.事务的特点?--ACID

原子性:事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用。

一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

隔离性: 可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏.

持久性:一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中.

3.事务并发带来的问题。

脏读:读取其他事务未提交的数据。

不可重复读:两次读取的内容不一样。

幻读:两次读取的数量不一样。

4.如何解决事务并发带来的问题。

read uncommited(读取未提交内容):引起脏读问题。

read commited(读取提交内容):可解决脏读。

repeatable read(可重读):可解决脏读,不可重复读。

serializable(可串行化):可解决脏读,不可重复读,幻读。

5.spring如何实现事务。

5.1事务jar包

 <!--spring事务依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

5.2修改配置文件

   <!--注入事务切面类 必须为transactionManager-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    
    </bean>

    <!--开启事务注解驱动-->
    <tx:annotation-driven/>

5.3使用事务注解

;