您的位置:首页 > 其它

慕课网 hibernate一对多

2016-01-07 20:21 239 查看

映射类型:

(1)一对多 *

(2)多对一 *

(3)一对一

(4)多对多

在数据库中,可以通过添加主外键的关联,表现一对多的关系

在java中,通过在一方持有多方的集合实现,即在“一”的一端中使用<set>元素表示持有“多”的一端的对象

使用myeclipse实现一对多

1.添加hiberbate jar包

2.配置hiberbate.cfg.xml

3.在数据库中产生表

4.创建持久化类并配置单向一对多关系

5.配置 hiberbate.cfg.xml

  <!--指定映射文件的路径-->

6.测试 

多对一

多对一的关系和关系数据库中的外键参照关系最匹配,即在己方的表中一个外键参照另一个表的主键.

通过在多方持有一方引用实现,需要在"多"端使用<many-to-one>配置

inverse属性

指定关联关系的控制方向,默认由One方来维护。

关联关系中,inverse="false"则为主动方,由主动方负责维护关联关系

在一对多关联中,只能设置一方的inverse为true,这将有助于性能的改善。

cascade属性

表示级联操作,该属性的值有save、save-update、delete、none、all这几种

all表示任何操作中都使用级联操作相关的信息,save表示保存的时候使用级联保存相关的信息,以此类推。

配置双向关联后,通过查询某一方数据后,可以直接导航查询到另一方的相关数据。

多对一 一对多  学生班级

student.java 

public class Student implements Serializable {
private int sid;
private String sname;
private String sex;

// 在多方定义一个一方的引用
private Grade grade;
...
}


Grade.java

public class Grade implements Serializable {
private int gid;
private String gname;
private String gdesc;
private Set<Student> students=new HashSet<Student>();
}


Grade.hbm.xml

<!-- 配置一对多关联关系 -->
<set name="students" table="student" inverse="true" cascade="all">
<key column="gid"></key>
<one-to-many class="entity.Student"/>
</set>


Students.hdm.xml

<!-- 配置多对一关联关系 -->
<many-to-one name="grade" class="entity.Grade" column="gid" >
</many-to-one>


hibernate.cfg.xml

<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>

<!-- 指定映射文件的路径 -->
<mapping resource="entity/Grade.hbm.xml"/>
<mapping resource="entity/Student.hbm.xml"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: