在多个grails应用程序客户端之间共享grails应用程序域插件并唱出域类的子集

时间:2010-11-25 11:31:47

标签: database hibernate grails gorm grails-plugin

这是一个奇怪的要求,如果这是可能的话,我正在考虑它。第二个想法是否是一个可行的设计决定。

以下是该方案:

我们有一个由160个表组成的数据库。 我们在遗留数据库之上创建了一个Grails ORM插件。

现在我们有不同的应用程序(插件)将使用这个orm插件。

每个应用程序都可以独立运行,也可以与其他应用程序结合使用。

每个应用程序主要使用插件中设计的完整ORM模型的子集。

为了独立运行应用程序,我只想创建一个独立的数据库,其中包含应用程序所需的表,而不是160个表的整个数据库。但是由于独立应用程序依赖于上面定义的ORM插件,是否可能只有一个表的子集,或者我是否要创建完整的数据库模式?

如果有任何进一步的细节需要了解这个问题,请告诉我。

谢谢, Alam Sher

2 个答案:

答案 0 :(得分:0)

我建议将ORM插件拆分成单独的“sub-orm”插件。这些“sub-orm”插件当然可能依赖于其他“sub-orm”插件。 “sub-orm”插件之间的分界线应该由业务领域定义。

然后,每个“部分”应用程序可能依赖于所需的“sub-orm”插件,这些插件在其范围内是必需的。 在这种情况下,传递依赖性解析很有价值。

一般情况下,如果多个不同的应用程序同时访问同一个数据库,则存在从Hibernate获取锁定异常的风险。

答案 1 :(得分:0)

您可以在src/groovy文件夹中声明ORM映射的域类,因此不会映射插件中的任何内容,然后在最终应用程序中扩展必要的类。将使用src中声明的映射。

这增加了额外的复杂性,但确实如此。