第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中定义事务 定义注解驱动的事务