我遇到了一对一关系的问题,导致表的不必要的连接,在许多情况下我不需要这些数据。而且据我所知,似乎很明显我们无法让hibernate不加入某些表或将它们保持为延迟加载。
我找到了两个解决此问题的方法:
所以,我想知道,有没有办法在数据库表及其关系中进行更改,这有助于解决这个问题。例如,我当前的表格设计如下图所示:
此处,每当我加载订单时,它也会自动加入发货和 BillingInfo 表,但跳过加入客户和 ShippingAddress 表。
由此我想到在订单表中为货件和 BillingInfo 添加 FK 列,但似乎有点奇怪。因为对于订单,没有必要提供BillingInfo和Shipment信息。对于可能被填充但可能没有填写的条目,添加FK列似乎会给订单表带来额外负担。
- >为此,我想听取专家的意见,了解应该如何设计表来处理这种情况。
与此类似,我还有2-3个表,它们也会像Order of Shipment和BillingInfo一样被加入和获取。这使得获取Order表记录非常庞大。
订单实体类中的代码如下:
@OneToOne(fetch = FetchType.LAZY, mappedBy = "order")
public Shipment getShipment() {
return shipment;
}
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ShippingAddressId")
public Address getShippingAddress() {
return shippingAddress;
}
货件实体中的代码如下:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderId", nullable = false)
public Order getOrder() {
return order;
}