单向和双向关系对建模和jpa的优缺点

时间:2018-07-02 09:44:49

标签: java hibernate oop jpa hibernate-mapping

我在模型中有两个实体,例如Order和BankDetail。订单与具有一对一关联的BankDetail组成。


类建模

作为组合,BankDetail将是Order对象中的一个字段。但是对于BankDetails类,有两个选项,即Order可以是BankDetail的一部分,而Order不能是BankDetail的一部分。 是否还有其他条件可以选择其中一个接受导航,例如在第一个选项中,可以导航到BankDetail对象的Order。


JPA

Database tables
table_order(id, ..)

table_bank_detail(id,order_id, ..)

第一个具有双向关系的模型。

@Entidy
Class Order {
    @Id
    @Column(name = "id")
    private Long id;

    @OneToOne(mappedBy = "order")
    private OrderBankDetail bankDetail;
}

Class BankDetail {

    @Id
    @Column(name = "id")
    private Long id;

    @OneToOne
    @JoinColumn(name = "order_id")
    private Order Order;
}

现在,在该模型中,BankDetails包含对Order的引用似乎并不明显,因为Order是那里的主要实体。 所以我将其更改为包含单向关系的Second Model。

@Entidy
Class Order {
    @Id
    @Column(name = "id")
    private Long id;


    @OneToOne
    @JoinColumn(name = "id", referencedColumnName = "order_id")
    private OrderBankDetail bankDetail;
}

Class BankDetail {

    @Id
    @Column(name = "id")
    private Long id;

}

这样做是否正确? 如果是,在哪种情况下应优先选择上述哪一项? 从JPA的角度来看,这两种模型的优缺点是什么。

0 个答案:

没有答案