使用外键保存hibernate对象而不加载依赖对象

时间:2017-11-15 08:20:55

标签: java hibernate jpa

当我们在Hibernate中保存一个对象时,我们将依赖对象保存为id而不是加载该对象并保存它。

Ex:员工有一个部门外键,所以如果我们需要保存员工对象,那么我们会做类似的事情:

saveEmployee{
emp.setName(name);
Department department = session.find(Department.class,deptid);
emp.setDepartment(department);
}

现在我们导入了1000条记录,并且我们在excel中将deptid作为一个单独的列,然后将调用不必要的1000次db来获取相应的部门。

然后有更好的方法来做到这一点 Is it possible to have foreign key enforced without object-to-object mapping?

1 个答案:

答案 0 :(得分:4)

使用load方法代替find

Department department = session.load(Department.class,deptid);

持久性提供程序只会在该点创建一个代理,并假设该实体在数据库中存在实际存在(如果不记得,则会报告错误。)

如果您的所有操作都使用一种transactinoal方法,您将获得N次插入而无需任何选择。