数据库-高级应用
#
事务框架原生支持单数据源事务、多数据源事务、分布式事务,分布式事务会在微服务版块专题介绍,这里只对单数据源事务和多数据源事务进行讲解。 有2种方式声明事务:
- 通过在服务类或控制器类的方法上添加@Transactional注解即可自动支持事务。@Transactional注解也可以直接加在类上,这样就表示这个类的所有方法都需要事务支持。 @Transactional注解能透明的识别处理单数据源和多数据源事务,无需额外特别的设定。需要注意的是,注解方式的事务声明需要通过依赖注入该类才有效,直接通过new创建对象是不能自动生效的。
- 在程序中显示的调用事务处理器。由于后续版本将对该功能做出改变,相关文档随后发布。
#
单数据源事务顾名思义,单数据源事务是指事务范围内的数据库操作都是针对同一个数据源,即同一个数据库连接。下面的例子是针对的同一个数据源main:
#
多数据源事务多数据源事务是指事务范围内的数据库操作涉及到多个数据源,即多个不同的数据库连接,@Transactional注解能透明的识别处理单数据源和多数据源事务。下面的例子针对的是2个不同的数据源main和test:
#
事件框架导出了大量的数据库底层事件,供开发时的调试以及应用扩展需要。
#
JDBC事件框架支持大量jdbc事件,按事件类型和需要划分为多种接口,ConnectionListener接口适用于jdbc连接相关事件,TransactionListener接口适用于jdbc事务相关事件,StatementListener接口适用于jdbc交互相关事件,ExecuteListener接口适用于jdbc命令及SQL执行相关事件,ExecuteBatchListener接口适用于jdbc批操作相关事件,ResultSetListener接口适用于jdbc结果集合相关事件, 还有针对使用较频繁的事件进行了封装的AnyExecuteListener和SimpleJdbcEventListener可供继承使用。下面实例继承自SimpleJdbcEventListener类,只对SQL执行前和执行后的事件进行监听:
然后在应用初始化时加载该事件监听器:
#
数据变更事件有时候需要知道数据表的数据发生了改变,方便对缓存或其他事务进行处理,特别提供了统一的数据变更事件。事件监听器需要实现接口DbChangeListener,见下面实例:
然后在应用初始化时加载该事件监听器:
需要注意的是数据变更事件发出后,如果最终事务执行失败而回滚的情况。利用该事件时需要自行考虑到此种情况的应对。
#
更多高级应用以上只列举部分重点内容,后续逐步完善更多具体的文档,并对重点内容进行专题描述。