-
Notifications
You must be signed in to change notification settings - Fork 536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[问答]Room数据库在模块化架构中的使用 #739
Comments
同问,又想做到模块间的解耦,又想持有一个AppDatabase单例?难搞 |
单独实现一个叫 database 都module,讲singleton实现在这个module里面,与database相关都data structure都单独定义,比如你要save user都资讯,dto叫做 userDto,为你的database module单独定义 DataUser,然后在要使用的module里面 implementation database这个module,这样可做到模块间的解耦也能做到全局的signleton |
我也碰到了这个问题。或许单独做一个database的module是一个相对较好的解决方案 |
好问题啊!!我也想知道 |
你好,邮件已收到,谢谢
|
感谢您的关注,我会尽快给您答复
|
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
抽成单独的module是个解决办法. 我目前所在项目就是这么做的. PS:楼上这些自动复回邮件的,能不能搞个白名单? 请尽量不要留下无意义复回@272664150 @hanyueziad @nickalc |
感谢您的关注,我会尽快给您答复
|
你好,邮件已收到,谢谢
|
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
不妨换个想法,在不同的子模块分别写 @entity、 @dao 以及 @view,然后将这些子模块在 app 模块进行聚合,如下所示。
@Database(
entities = [
EntityA1::class,
EntityA2::class,
EntityB1::class,
EntityB2::class
],
views = [
],
version = 1,
autoMigrations = [
]
)
abstract class ConfigRepo : RoomDatabase(), IConfigRepo
interface IConfigRepo {
fun entityA1Dao(): EntityA1Dao
fun entityA2Dao(): EntityA2Dao
fun entityB1Dao(): EntityB1Dao
fun entityB2Dao(): EntityB2Dao
}
|
@geek5nan 没完全get |
你好,邮件已收到,谢谢
|
感谢您的关注,我会尽快给您答复
|
这是来自QQ邮箱的假期自动回复邮件。
您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
这是来自QQ邮箱的自动回复邮件。
您好,您的邮件已收到。如有后续我查收后会立刻联系您。如在假期,我将在假期结束后,尽快给您回复。
|
@nicelyjust 我的建议是仅在 App 模块实现 |
子模块中实现相应的Entity和Dao,在App中实现RoomDatabase,所有表的增删改,都在对应模块中实现,这是第一步。 那么第二步,就是在编译时生成RoomDatabase,通过APT技术,扫描子模块中所对应内容(Entity、Dao、表更改语句等等)生成原本需要开发者实现的代码。 以上是我的思路,有空我去写一个 |
|
在模块化架构中,为了减少模块间的耦合,尽量想在每个模块中持有相关的entity和DAO,但是ROOM数据库的架构需要注解所有的entity在一个抽象的AppDatabase类中,如果想减少耦合的话,需要在每一个业务module里声明一个AppDatabase单例,这样内存消耗就会过高,在官方文档中有这么一段备注:
在另一篇文章中,也把相关的利弊说了一下
绝对模块化的好处
缺点
想问问大家,有没有更好的方案
参考:
The text was updated successfully, but these errors were encountered: