Какое наилучшее / распространенное решение (лучшие практики) для работы с отношениями в 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) Как мне сохранить / установить нового сотрудника с существующим или новым заданием? У нас есть сущность Employee со String jobId, а также создана переменная задания Job 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());
Немного лучшими решениями является повторная реализация метода setJobId () в классе Employee (должен быть также некоторый код, чтобы узнать, существует ли упомянутое задание или нет):
public void setJobId(String jobId) {
if (getJob() == null) {
this.jobId = jobId;
job = new Job();
job.setJobId(jobId);
} else {
this.jobId = getJob().getJobId();
}
}