2

我正在寻找有关大型遗留模式映射的一些建议。

这是情况。假设我们有一个名为 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
}

但是,BusinessTransaction 表和 User 表之间没有外键。在 SQL 中,用户将通过部门键上的左外连接连接到 BusinessTransaction。

创建这些外键需要创建连接表。我们的 DBA 不愿意创建外键或连接表,这样做的原因是可以理解的(影响批处理脚本、可能对应用程序产生副作用等)。

我唯一的另一个想法是使用 JoinFormula。但是,@JoinFormula 没有最好的文档,我的理解是数据将是只读的。

我是否忽略了任何有用的东西?

编辑:添加部门。

杰森

4

1 回答 1

5

为了在 Hibernate 中声明这些表之间的关系,无需创建外键或连接表。Hibernate 不会验证是否存在此类外键(只要您不要求数据库模式验证)。

但是,请注意,您需要在 User 表上建立适当的索引。索引也独立于外键,但未能创建它们将导致严重的性能损失。

但是您必须注意,如果没有创建外键,如果用户表中的键丢失,您可以预期 Hibernate 的不确定行为(错误)。外键是为了保证数据库的一致性。

于 2012-06-18T21:14:58.743 回答