请问main data store 和 Additional data store 的区别,
以及在composite多subject项目中该如何使用?
Main 和 Additional 数据存储都是对应某一个数据库。
为什么会有这两种类型的存储?我们的App一般来说都有一个数据库(Main),但是出于业务的考虑,有些数据需要进行分库存储,或者需要使用第三方库里的数据,因此除了主数据库之外,我们App需要连接的其他数据库都是 Additional data store。
在架构设计时,首先需要考虑的是数据库层如何设计,是否有分库的需求,是否有对接第三方数据库的需求,如果有,那么就需要 Additional data store。
如果项目中有了附加数据存储,然后就是功能层的设计,某个单独的add-on也可以带附加存储。这就涉及到具体的业务分割和模块化了。
使用时,附加存储会稍微麻烦点,有些语句(比如加载纯数值的JPQL)需要指定 Store。EntityManager也需要指定Store。
总之,要从需求和业务角度出发,将数据层、业务层的数据和业务分隔分析好,按照自己的项目设计合理的架构。Jmix在这种场景下是能灵活支持的。
关于以上项目结构,我是否可以subproject设置各自的main store?
如可以,由于编译后真单体服务,内部会对多个数据库处理吗?
不同add on我想有自己的数据库这种是否支持?是否合理,如何配置?
Main Store 是App和所有 Add-ons 共用的。
也就是说你的Add-on里面的 Main Store 相关的数据会保存在 App 的 Main Store 中。
如果每个 Add-on需要有自己的数据库,只能作为 Additional store使用。通过 Jmix Studio 可以添加:
但是 add-on 中的数据存储并不保存在应用的属性文件中。请参考 组合项目 :: Jmix 文档
明白了