休眠关系映射

时间:2014-08-22 08:13:48

标签: database hibernate relational-database entity-relationship

所以,如果我有用户和地址表。因为每个用户都可以买卖东西,所以在users表中应该有return_address,shipping_address和billing_address。那么我该如何定义这两个表的关系呢?

  1. 多对多:因为多个用户有多个地址(不同类型的地址)。
  2. 一对一:因为每个用户只有一个地址。
  3. 一对多:许多用户可以共享一个地址。
  4. 在阅读了一些关于hibernate的教程后,我发现自己很混乱,因为现在它有多对一(我明白这是对一对多的回归,但仍然令人困惑)。

    有人会介意给我一些设计数据库的建议和建议,以及优化数据库/查询性能吗?帮助像我这样的新学员减轻头痛是很棒的。

    提前谢谢。

1 个答案:

答案 0 :(得分:0)

用户表将保存地址键。

@Entity
public class Customer{

    @ManyToOne
    @JoinColumn(name = "return_address_fk")
    private Address   returnAddress;

     @ManyToOne
    @JoinColumn(name = "shipping_address_fk")
    private Address   shippingAddress;

     @ManyToOne
    @JoinColumn(name = "billing_address_fk")
    private Address   billingAddress;
}


@Entity
public class Address{
// address properties
}

**不要混淆。

地址应该是推荐实体,意味着它的生命周期不依赖于用户。

1。)许多用户可以拥有相同的returnAddress。

2.)许多用户可以拥有相同的shippingAddress。

3.)许多用户可以使用相同的billingAddress。

如果你说,一个用户可以拥有多个returnAddress,shippingAddress,billingAddress,然后添加Many To Many注释。将创建单独的表。