0
使用ORM中的關係(來自長期項目視圖)的最佳/通用解決方案(最佳實踐)是什麼? 1)例如,可以使用以下物質:我有Oracle HR架構。在可能的每個對象(實體)之間創建關係還是僅在現在我真正需要的對象之間創建關係(以及將來會更改)?使用ORM中的關係
@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)我應該如何使用現有的或新的Job存儲/設置新員工?我們有一個字符串的jobId Employee實體,並創建關係的工作職位變量:
@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();
}
}
非常感謝您的回答。 – Ziletka
是否有一些很好的解決方案如何存儲新的員工與現有的工作?因爲當我調用job.setJobId(「AC_ACCOUNT」)和employee.setJob(job)時,系統會嘗試觸摸(存儲新作業或更新現有作業)作業表。 – Ziletka
使用數據庫中的給定ID(使用em.find或em.getReference或session.get或session.load)獲取作業,並在員工中設置此作業。 –