当我们在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?
答案 0 :(得分:4)
使用load
方法代替find
:
Department department = session.load(Department.class,deptid);
持久性提供程序只会在该点创建一个代理,并假设该实体在数据库中存在实际存在(如果不记得,则会报告错误。)
如果您的所有操作都使用一种transactinoal方法,您将获得N次插入而无需任何选择。