将庞大的 sql 表逻辑拆分为较小的表
Posted
技术标签:
【中文标题】将庞大的 sql 表逻辑拆分为较小的表【英文标题】:Split huge sql table logically into smaller tables 【发布时间】:2021-12-16 09:26:30 【问题描述】:我正在使用 Hibernate ORM 框架制作一个 Spring Boot 应用程序。
我在那里有Employee
实体:
@Entity
public class Employee
private String firstName;
private String position;
//// more than 30 private fields
//// fields related to one sublogic
private String category;
private LocalDate categoryAssignmentDate;
private LocalDate categoryAssignmentDeadlineDate;
private LocalDate docsSubmitDeadlineDate;
Employee
类中有 30 多个私有字段。
如您所见,我有 4 个字段与同一子逻辑 Category
相关。
所以我的问题是:将我的Employee
实体拆分为两个实体Employee
和Category
,这将作为OnetoOne
关系连接是一个好习惯吗? p>
是否让代码更清晰?
【问题讨论】:
可能,是的。这将由database normalization 确定。给定的属性列应仅取决于表的主键。如果该属性依赖于另一个属性,则它属于另一个表。 【参考方案1】:使用embedded and embeddable 防止双表映射和不必要的OneToOne 关系。
@Entity
public class Employee
private String firstName;
private String position;
@Embedded
private Category category
@Embeddable
public class Category
private String category;
private LocalDate categoryAssignmentDate;
private LocalDate categoryAssignmentDeadlineDate;
private LocalDate docsSubmitDeadlineDate;
您可能需要添加attribute overrides
【讨论】:
以上是关于将庞大的 sql 表逻辑拆分为较小的表的主要内容,如果未能解决你的问题,请参考以下文章