【发布时间】:2011-09-30 09:54:31
【问题描述】:
在 ORM 中处理关系的最佳/常见解决方案(最佳实践)是什么(从长期项目的角度来看)?
1) 例如我有 Oracle HR 模式。是否可以在可能的每个对象(实体)之间创建关系,或者仅在我现在真正需要的对象(以及将来更改)之间创建关系?
@Entity
public class Employee {
@Id
private long employeeId;
@ManyToOne((fetch = FetchType.LAZY)
private Job job;
}
@Entity
public class Job {
@Id
private String jobId;
@OneToMany(fetch = FetchType.LAZY)
private List<Employee> employeeList;
}
2) 我应该如何使用现有或新工作存储/设置新员工?我们有带有字符串 jobId 的 Employee 实体,并且还创建了关系 Job 工作变量:
@Entity
public class Employee {
@Id
private long employeeId;
private String jobId;
@ManyToOne((fetch = FetchType.LAZY)
private Job job;
}
最坏的解决方案是每次都设置两个参数:
Job job = new Job();
job.setJobId("JOB_01");
Employee employee = new Employee();
employee.setEmployeeId(1L)
employee.setJobId(job.getJobId());
更好的解决方案是在 Employee 类中重新实现 setJobId() 方法(应该还有一些代码来确定是否存在提到的 Job):
public void setJobId(String jobId) {
if (getJob() == null) {
this.jobId = jobId;
job = new Job();
job.setJobId(jobId);
} else {
this.jobId = getJob().getJobId();
}
}
【问题讨论】: