为什么要用多数据源
随着应用功能的不断增加,以及对高可用高并发的需求,分库分表成了一项很常用的技术。同时,企业内部不同的应用需要打通数据,在数据大集中之前,各个系统的数据还是有自己的独立数据库,为了方便快速实现一些简单的需求,就可能产生直接从其他数据库读取数据的需求。总而言之,多数据源就是要从不同的地方操作数据。
jeecg 的多数据源管理
由于 jeecg 框架主要是应用于企业级的系统,现在只是对关系型数据库实现了多数据源管理。我们先来看一下这个模块的界面图:
image.png
从编辑窗口可以看出,这些字段就是对应了 jdbc 连接关系型数据库所需要的信息,然后再给每个数据源一个唯一标识,用于切换数据源时使用。数据源的数据是保存在 t_s_data_source 表,表字段也没有什么特别难理解的。接下来我们看一下使用多数据源时的关键代码。
jeecg 框架对多数据源的调用都封装在 DynamicDBUtil 这个工具类里,下图是这个类的方法列表。
image.png
工具类里的 dbSources 属性用一个 Map 集合保存了所有配置的数据源,封装的方法参数都包含一个代表某个数据源的key(即管理界面里配置的唯一标识),要进行对应的操作,就用 key 得到 DataSource 对象,然后构造 JdbcTemplate 对象,通过 JdbcTemplate 对象操作数据库。当然,有了 DataSource 对象,就可以用其他喜欢的 ORM 框架来操作数据库了。所谓的多数据源管理,也就是在需要的时候,能方便地获取到 DataSource 对象,再交由其他代码去调用。
领取专属 10元无门槛券
私享最新 技术干货