如何解决使用分区表提高JPA update性能
在休眠状态下,我有一个JPA实体,它的Id
类型的UUID
字段,date
类型的Instant
字段,以及其他一些字段,包括用One与许多关系。
为了说明
@Entity
@Table(name = "sport_car")
public class SportCar implements Serializable {
@Id
UUID id;
Instant date;
@OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
List<Sponsor> sponsors;
...
}
为了提高性能,我决定将sport_car
表划分为date
,每天划分一个,因为每天都会添加很多SportCar
。
为了改善SportCarJpaRepository.update()
,我正在考虑将复合键/ id设置为SportCar
,包括date
,但是问题出在sponsors
属性上。
由于大多数更新都是在最近的一天中完成的,因此性能改善应该很明显。
要进行一对多引用,我需要在映射类Sponsor
的表中添加一个新列,因为JPA假定您需要sport_card
表中的所有id列来进行唯一引用,因为id
字段是唯一的,所以在真正不需要的时候。
为了说明
@Entity
@IdClass(SportCarId.class)
public class SportCar implements Serializable {
@Id
UUID id;
@Id
Instant date;
@OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "id",referencedColumnName = "sport_car_id")
List<Sponsor> sponsors;
...
}
public class SportCarId implements Serializable {
UUID id;
Instant date;
}
这将不起作用,因为SportCar.date
上的@OneToMany
关系中未引用SportCar.sponsors
字段。
我的问题是,Hibernate / JPA是否提供一种利用分区来优化update()
的方法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。