是否有支持无连接组合的ORM

时间:2011-02-05 14:57:08

标签: database-design orm

编辑:将标题从“继承”更改为“合成”。左翼问题没有改变。

我很好奇是否有一个ORM工具支持继承而不创建必须连接的单独表。

简单的例子。假设一个客户表,其中包含一个Bill-to地址,一个供应商表,以及一个汇款地址。保持简单并假设每个地址,而不是每个地址的子表。

这些地址将有一些共同的值:地址1,地址2,城市,州/省,邮政编码。所以假设我有一个类“addressBlock”,我希望客户和供应商继承这个类,也可能从其他类继承。但我不希望单独的表必须加入,我想分别在客户和供应商表中的列。

是否有支持此功能的ORM?

我在StackOverflow上发现的最接近的问题可能是同一个问题,下面链接,但我不能确定OP是否在询问我的问题。他似乎正在询问上述继承,因为会有多个表格。我正在寻找可以使用继承而不生成多个表的情况。

Model inheritance approach with Django's ORM

1 个答案:

答案 0 :(得分:4)

JPA(Java Persistence API,由Hibernate,EclipseLink和其他人实现)支持这一点:您将定义一个地址POJO,将其标记为“可嵌入”,并有两个实体(客户和供应商),每个实体都有一个类型为Address的字段(标记为“嵌入式”)。客户地址的字段将映射到Customer表中的列,供应商地址的字段将映射到Vendor表中的列。

请注意,此处没有继承。继承适用于 is-a 关系。供应商不是地址,客户也不是地址。但是,有一个组合,因为供应商具有地址,而客户具有地址。