gpt4 book ai didi

grails - 如何在 Grails 中具有不同持久性策略的项目之间共享域?

转载 作者:行者123 更新时间:2023-12-02 15:32:38 25 4
gpt4 key购买 nike

我是 Grails 的新手,在三个不同的应用程序之间共享我的域模型时遇到了一些问题。其中两个需要持久化模型对象,第三个不需要。

似乎通常的管理方法是创建一个插件并将域类放入其中。问题在于域类包含特定的持久性信息,并且每个应用程序持久化对象的方式存在一些差异。
此外,其中一个应用程序根本不需要保留这些对象,因为它使用来自另一个应用程序的 JSON Web 界面检索和删除它们。当我以 dbCreate = "create-drop" 模式运行此应用程序时, Grails 在启动时为这些类创建不需要的表。

我认为所有问题都来自于在域类中混合模型和持久性特定信息。
我该如何解决?有没有更好的方法来共享域模型?

最佳答案

您的方法是正确的,因为有一个包含所有域类的插件。这种方法适用于对 dataSource 进行多重配置,而不是操纵插件的行为。为了达到同样的效果,您可以相应地修改每个应用程序中的数据源。例如,如下所示:

//Application 1:
//DataSource.groovy
dataSource{
environments{
production{
.........
dbCreate = "update"
url = "prod db url"
..........
}
}
}

//Application 2: [Similar to Application 1]
//DataSource.groovy
dataSource{
environments{
production{
.........
dbCreate = "update"
url = "prod db url"
..........
}
}
}

//Application 3: [which does not persist model to db]
//DataSource.groovy
dataSource{
environments{
production{
.........
//anything other than update, create-drop, validate does nothing
//Taking into consideration you already have the tables created from
//any of the other application.
dbCreate = "none"
url = "prod db url"
readOnly = true //To be on the safer side
..........
}
}
}

相同的行为适用于其他环境。引用 DataSource以更深入地了解其属性。

如果您已经有了这些表并且想要为这些表生成域类,您可以使用 db-reverse-engineer插件毫不费力。

不过,如果您需要从应用程序 3 使用其他连接,则可以使用多个数据源。

关于grails - 如何在 Grails 中具有不同持久性策略的项目之间共享域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com