用hibernate保存从表数据的时候,我们可能选择的入口点也不同。
1 以主表为入口点来保存,
2 以从表为入口点来保存。
3 hql/sql语句或者结构化对象查询 来保存。
现在针对1,2点的情况来说明 如果以主表为入口点保存,
例如CLASS-STUDENT 的一对N关系
此时我们要保存STUDENT对象。
如果以CLASS类为入口点的话,
必须这么做:
Class(班级) class = service.getStudent("id");
Student s = new Student();
s.setClass(class);
classService.save(class);
错误的做法:
Class class =new Class(); class.setId("id");
s.setClass(class);
classService.save(class);
错误的做法会造成一条新的insert语句。
如果以Student为入口点的话:
class对象就不必须是一个持久化态的实例,class可以是一个临时态的实例。
我们可以这么做:
Class class = new Class();
class.setId("id");//此时class是一个瞬时状态的实例,也可以成为临时态
stu.setClass(class);
StuService.saveStu(stu);