学生类和配置文件
public class Student implements Serializable{
private int sid;
private String sex;
private String sname;
private Grade grade;
.....
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
<class name="entity.Student" table="student">
<id name="sid" column="sid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="sname" type="java.lang.String">
<column name="sname" length="20" not-null="true"></column>
</property>
<property name="sex">
<column name="sex"></column>
</property>
<!-- 配置多对一的关联关系 -->
<many-to-one name="grade" class="entity.Grade" column="gid">
</many-to-one>
</class>
</hibernate-mapping>
班级类和配置文件
public class Grade implements Serializable{
private int gid;
private String gname;
private String gdesc;
//在一方定义一个多方的集合
private Set<Student> students=new HashSet<Student>();
........
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
<class name="entity.Grade" table="grade">
<id name="gid" column="gid" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="gname" type="java.lang.String">
<column name="gname" length="20" not-null="true"></column>
</property>
<property name="gdesc">
<column name="gdesc"></column>
</property>
<!-- inverse 由多方维护关联关系 多方不需要维护关联关系 -->
<set name="students" table="student" inverse="true">
<key column="gid"></key>
<one-to-many class="entity.Student"/>
</set>
</class>
</hibernate-mapping>
在一方中 inverse属性的使用提高了sql语句的效率
cascade属性
当设置了cascade属性不为none时,Hibernate会自动持久化所关联的对象
cascade属性的设置会带来性能上的变动。
在<set>属性中设置cascade属性 可以设置为 delete all save-update none