天天看点

Spring in action第6章

第6章

理解事务:

在软件开发领域,全有或者全无的操作被称为事务。

4大特性:原子性:事务不可再分。

                  一致性:一旦事务完成(不论成功还是失败),系统必须确保它所建模的业务处于一致状态。现实的数据不应该被损坏。

                  隔离性:事务允许多个用户对相同的的数据进行操作。

                  持久性:一旦事务完成,事务的结果应该是持久化的。

编码式事务和声明式事物:前者着重于细粒度的控制,后者着重于易用性。

选择事务管理器:(配置一个bean,供在代码中使用它)

                                1,JDBC事务

                                2,Hibernate事务

                                3,Java持久化API事务

                                4,JTA(Java Transaction API)事务。

spring中的编码事务:直接在java代码中,通过使用事务管理器的事例调用方法来实现,如:.setRollbackOnly();

声明式事务::是通过使用Spring AOP框架实现的。使用spring的tx命名空间和@Transactional注解。

                             在声明式事务中,有5个事务的属性:1,传播行为:新的事务应该被启动还是被挂起,或者方法是否要在事务环境中运行。

                                                                                                2,隔离级别:隔离级别定义了一个事务可能受其他并发事务影响的程度。(并发可能会导致的问题:1,脏读:读错。

                                                                                                                                                    2 ,不可重复读:读一次以上时,得到不同的数据。3,幻读:与2类似)

                                                                                                3,只读。

                                                                                                4,事务超时:时间太长就回滚,不会等到其结束。

                                                                                                5,回滚规则:定义哪些异常会导致事务回滚而哪些不会。

                                                                 在XML中定义事务                                       定义注解驱动的事务