对大型Hibernate模型进行分区以管理模式依赖性

时间:2010-09-20 22:00:20

标签: hibernate maven-2 model annotations packaging

我们正在考虑将我们的hibernate表分成包或域(开发票,销售,..等),主要用于依赖管理问题。

它当然不会整齐地破坏,因此我们不确定如何处理跨域的关系。为此设置一个新的实体注释会很好,但同时一个想法就是制作多个模型副本,其中关系被注释为“剪掉松散的末端”的方式存在一些变化。这些改变的entites可能需要在他们不属于的其他模型中“只读”。此外,我们会暂时使用现有的完整模型,因为我们会转换应用以使用较小的模型。

因此,例如,大多数表应完全存在于一个模型或另一个模型中;但是如果Domain1.Table1与Domain2.Table2相关,那么您将在另一个域中为每个域制作一个只读副本。该副本会将其域中的其他关系更改为“死胡同”(可能通过使用整数fk引用属性替换关系链接)。

关键是,我们希望有一些方法来管理我们的maven构建,这样当有人更改表上的属性时,我们已经声明了对该域模型的依赖,因此我们可以减少应用程序的数量需要重建。 (我们有严密的部署中断窗口)。

哦,并且所有域都必须使用相同的java包来与我们的遗留EJB持久性工具

兼容

这就是这个想法。有什么建议/反馈/意见吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您建议将相关表的实体复制到所需的域(而不是它的域),然后将其自己的域依赖关系更改为“死胡同”,也称为整数FK值,如果需要,可能会用于执行查找。

我的建议是你应该在每个域的边缘执行此操作,而不是复制任何内容。因此,如果Domain1.Table1与Domain2.Table2相关,它只有一个FK,int字段可能称为table2Id。这将在每个域的边缘创建死角,而不需要交叉和复制。

我不得不问......

您确定自己拥有多个域吗?

问题的根源似乎来自于您的数据相关的事实,向我表明它们属于同一个域。例如,您将销售和发票视为单独的域,但它们可能都共享客户参考。这一切都感觉它属于我。一些项目/行业领域很大,为了方便和简单而分解它们通常最终会成为一个错误,并且往往会增加意想不到的复杂性。例如,如果您需要进行Sale查询,该查询应该具有对发票的引用,而现在您必须单独进行发票查询,这会使您的API客户的使用变得有点重量级。