datastores问题请教

请问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在这种场景下是能灵活支持的。

image
关于以上项目结构,我是否可以subproject设置各自的main store?
如可以,由于编译后真单体服务,内部会对多个数据库处理吗?
不同add on我想有自己的数据库这种是否支持?是否合理,如何配置?

Main Store 是App和所有 Add-ons 共用的。

也就是说你的Add-on里面的 Main Store 相关的数据会保存在 App 的 Main Store 中。

如果每个 Add-on需要有自己的数据库,只能作为 Additional store使用。通过 Jmix Studio 可以添加:
image

但是 add-on 中的数据存储并不保存在应用的属性文件中。请参考 组合项目 :: Jmix 文档

明白了 :+1: