我正在寻找有关映射大型旧架构的一些建议。
这是情况。假设我们有一个名为BusinessTransaction的类。此类具有引用用户ID的多个字段:
@Entity
public class BusinessTransaction implements Serializable {
private Long id;
private User createdBy;
private User editedBy;
private User cancelledBy;
private String department;
// etc
}
public class User implements Serializable {
private Long id;
private String department;
//etc
}
Run Code Online (Sandbox Code Playgroud)
但是,BusinessTransaction表和User表之间没有外键。在SQL中,用户将通过部门密钥上的左外部联接连接到BusinessTransaction。
这些外键的创建将需要创建联接表。我们的DBA不愿创建外键或联接表,并且这样做的原因可以理解(影响批处理脚本,对应用程序可能产生的副作用等)。
我唯一的另一个想法是使用JoinFormula。但是,@ JoinFormula没有最好的文档,我的理解是数据将是只读的。
我是否忽略了任何有用的东西?
编辑:添加部门。
杰森
无需创建外键或联接表即可在Hibernate中声明此表之间的关系。如果此类外键存在,Hibernate不会进行验证(只要您不要求数据库架构验证)。
但是请注意,您将需要在User表上使用适当的索引。索引也独立于外键,但是如果无法创建它们,则会导致性能严重下降。
但是您必须注意,如果没有创建任何外键,则如果User表中的键丢失,则可以预期Hibernate的行为不确定(错误)。外键用于确保数据库的一致性。
| 归档时间: |
|
| 查看次数: |
5061 次 |
| 最近记录: |