使用多个数据库'模型的公认惯例是什么?在Spring / Hibernate组合中?
对于让我摸不着头脑的问题感谢一些帮助,因为我不是Spring / Hibernate的专家!
我们正在开发一个迄今为止已根据其第一个客户的规范构建的Web项目。所有数据库表都映射到POJO,我们使用Hibernate Annotations。很简单,该项目是一个CRUD应用程序,允许最终用户通过前端更新数据库信息。
我们现在需要支持新客户,但该客户的规格略有不同;我们将对一些表格进行更改。列和数据类型。
我们不希望合并到一个表中,因为这会使具有大量NULL列的数据库膨胀(在某些表中每个客户将有10个以上的唯一列)。
前端我们可以轻松处理,因为我们只是转换到JSON和从JSON转换,并且前端已经从头开始实现每个客户。但是后端有点复杂。
我们尝试过一个原型,我们在运行时覆盖两个表;我们将两个相应的模型类转换为接口,并为每个客户实现一个具体的类,通过Spring配置加载,例如对于"产品"表,我们试过:
package com.mycompany.generic.model;
public interface Product
然后
package com.mycompany.customera.model;
@Table(name="products")
public class CustomerAProduct implements Properties {
String colour;
int weight;
}
或
package com.mycompany.customerb.model;
@Table(name="products")
public class CustomerBProduct implements Properties {
String colour;
int volume;
Double price;
}
.. Spring加载,作为运行时选项, com.mycompany.customera 或 customerb 取决于配置,以及任何客户特定的验证/服务类对新的POJO采取行动。您会看到基础列可能不同。
但是,我很乐意投入实施这个,因为..
这些看起来非常重要,所以我正在努力研究一种更好的方法。我们可以通过Maven构建每个客户,但是我不知道如何在我们开发本地的过程中以一种不会破坏Eclipse的方式实现它。
或者,是否有其他方法我不知道?
提前感谢有关研究内容的任何建议或指示等。
答案 0 :(得分:0)
或者,还有其他一些我不知道的方法吗?
您无法从基于注释的映射切换到xml映射?
每个客户都会获得一组XML映射文件。现在,您只需要在模型真正区别客户时进行子类化。