1、建表
student( | student_course( | course(
sid ————>| sid cid // 这两个既是主键也是外键 ————> | cid
sname | ) | cname
description | | description
) | | )
4、配置文件 hibernate.cfg.xml
5、多对多
5-1关系操作:
1 多对多谁操作效率都一样。
2 解除关系:把第三张表的一行数据删除掉。
3 建立关系:把第三张表的数据增加一行记录。
4 变更关系:对第三张表执行 update 操作;先删除后增加。
5-2 级联操作:
都是对象针对集合的操作。
student( | student_course( | course(
sid ————>| sid cid // 这两个既是主键也是外键 ————> | cid
sname | ) | cname
description | | description
) | | )
2、建类 Student.java
public class Student implements Serializable{
private Long sid;
private String sname;
private String description;
private Set<Course> courses;
封装……
}
写Student.hbm.xml <hibernate-mapping>
<class name="cn.itcast.hiberate.sh.domain.manytomany.Student">
<id name="sid" type="java.lang.Long" length="5">
<generator class="increment"></generator>
</id>
<property name="sname" type="java.lang.String" length="20"></property>
<property name="description" length="100"></property>
<!--
table就是用来描述第三张表
-->
<set name="courses" table="student_course" cascade="save-update">
<key>
<column name="sid"></column>
</key>
<many-to-many class="cn.itcast.hiberate.sh.domain.manytomany.Course" column="cid"></many-to-many>
</set>
</class>
</hibernate-mapping>
3、建类 Course.java
public class Course implements Serializable{
private Long cid;
private String cname;
private String description;
private Set<Student> students;
封装……
}
写 Course.hbm.xml
<hibernate-mapping>
<class name="cn.itcast.hiberate.sh.domain.manytomany.Course">
<id name="cid" length="5">
<generator class="increment"></generator>
</id>
<property name="cname" length="20"></property>
<property name="description" length="100"></property>
<set name="students" table="student_course">
<key>
<column name="cid"></column>
</key>
<many-to-many class="cn.itcast.hiberate.sh.domain.manytomany.Student" column="sid"></many-to-many>
</set>
</class>
</hibernate-mapping>
4、配置文件 hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/itcast_sh_hibernate
</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="cn/itcast/hiberate/sh/domain/manytomany/Course.hbm.xml" />
<mapping resource="cn/itcast/hiberate/sh/domain/manytomany/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
5、多对多
5-1关系操作:
1 多对多谁操作效率都一样。
2 解除关系:把第三张表的一行数据删除掉。
3 建立关系:把第三张表的数据增加一行记录。
4 变更关系:对第三张表执行 update 操作;先删除后增加。
5-2 级联操作:
都是对象针对集合的操作。