慕课网 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"/>
相关文章推荐
- 优先队列poj3253
- 演进的架构
- 被误解的MVC和被神化的MVVM(转)
- 简单密码破解
- 集群安装配置Hadoop具体图解
- 关于java中的不可变类(转)
- 概率论
- 安卓控件之菜单
- 安卓常用权限
- Codeforces 611C
- Intent七大属性
- Plus One leetcode
- Jquery自定义一个带名称的、可以传参数的函数以及setTimeout延迟调用,用法详解
- 求int型数据在内存中存储时1的个数
- cf#336-B-Hamming Distance Sum
- 安卓核心六Intent对象
- 店小二的总结
- Java多线程-实现多线程的两种方式
- php7新特性
- 安卓核心五application组件