首先两个类,一个是班级类,一个是学生类:
public class Grade{
private int id;
private String name;
private Set students = new HashSet();
}
public class Student {
private int id;
private String studentName;
}
数据库中表的结构:
t_grade: 两个字段:id name
t_student: 三个字段:id studentName gradeid
Grade类的映射文件:Grade.hbm.xml(此时是单向关联)
<hibernate-mapping>
<class name="Grade" table="t_grade" lazy="false">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<strong><set name="students" cascade="save-update" lazy="false">
<key column=" gradeid "/>
<one-to-many class="Student"/>
</set></strong>
</class>
</hibernate-mapping>
现在执行以下java代码:
Set students = new HashSet();
Student s1 = new Student ();
s1.setStudentName("s1");
Student o2 = new Student();
s2.setStudentName ("s2");
students.add(s1);
students.add(s2);
Grade g = new Grade();
g.setName("g1");
g1.setStudents(students);
session.save(c);
此时Hibernate发出的sql语句如下:
Hibernat

本文详细解析了Hibernate中inverse='true'的含义和作用。通过班级与学生类的例子,展示了当inverse='true'时,如何影响关联关系的维护,以及在保存对象时对数据库操作的影响。作者指出,在一对多关联中,让多的一方维护关系可以优化性能,减少不必要的update操作。
最低0.47元/天 解锁文章
888

被折叠的 条评论
为什么被折叠?



