spring事务:
事务:acid(原子性、一致性、隔离性、持久性)
spring并不直接管理事务,提供了多种事务管理器,委托给jdbc、jpa、hibernate、jta(管理多个管理源)。
事务基本属性:事务传播行为()、隔离规则、事务超时、是否只读、回滚规则。
提供编程式事务(入到了业务代码里面)和声明式事务(基于AOP,不影响代码)。
编程式事务:TransactionTemplate(TransactionTemplate和采用其他Spring模板,如JdbcTempalte和HibernateTemplate是一样的方法,线程安全。)和PlatformTransactionManager(new DataSourceTransactionManager(); //定义一个某个框架平台的TransactionManager,如JDBC、Hibernate)。
声明式:1、每个bean都有代理;2、所有的bean共享代理类;3、使用拦截器实现;4、使用标签定义的拦截器;5、全注解;
编译时异常不会自动回滚,如果是运行时异常,那会自动回滚!
Spring事务基于Spring AOP,Spring AOP底层用的动态代理,动态代理有两种方式:
- 基于接口代理(JDK代理),反射机制
- 基于接口代理,凡是类的方法非public修饰,或者用了static关键字修饰,那这些方法都不能被Spring AOP增强
- 基于CGLib代理(子类代理),asm框架,通过修改字节码生成子类处理
- 基于子类代理,凡是类的方法使用了private、static、final修饰,那这些方法都不能被Spring AOP增强
BBP的全称叫做:BeanPostProcessor,一般我们俗称对象后处理器
数据库的 undo log(原子性保证) redo log(持久性)
innodb 锁的粒度(行锁(索引之上的锁)和表锁(所引树的锁))
行锁:读锁(共享锁,s锁),写锁(排他锁,x锁)会阻塞其他的读锁和写锁