为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate初探之一对多映射

  • 实现单向一对多: 在one方的实体中添加保存many方的集合 在one放的配置文件中添加<one-to-many>配置 实现单向多对一: 在many方的实体中添加one方的引用 在many方的配置文件中添加<many-to-one>配置 常用属性: cascade:设置级联关系 inverse:设置由哪一方维护关联关系
    查看全部
    0 采集 收起 来源:课程总结

    2018-03-22

  • public static void findGradeByStudent(){ Session session=HibernateUtil.getSession(); Student s1=(Student)session.get(Student.class, 2); System.out.println(s1.getSid()+","+s1.getSname()+","+s1.getSex()); Grade g=s1.getGrade(); System.out.println(g.getGid()+","+g.getGname()+","+g.getGdesc()); HibernateUtil.closeSession(session); }
    查看全部
  • 级联(cascade)属性 配置映射文件: //grade映射文件 <!-- 配置单向一对多关系;设置inverse为true,有多方进行关联关系的维护; 当保存和更新时自动进行级联操作--> <set name="stu" table="stu" inverse="true" cascade="save-update"> <!-- 指定关联的外键列 --> <key column="gid"></key> <one-to-many class="com.entity.Student"/> </set> //student映射文件 <many-to-one name="grade" class="com.entity.Grade" column="gid" cascade="all"></many-to-one>
    查看全部
  • 对于inverse属性的说明; 1、一方的hbm.xml文件的<set>节点的inverse属性指定了关联关系的控制方向,默认由one方来维护; 2、关联关系中,inverse="false"则为主动方,由主动方负责维护关联关系; 3、在一对多关联中,设置one方的inverse为true,这将有助于性能的改善。 <!-- 配置单向一对多关系,设置inverse为true,有多方进行关联关系的维护 --> <set name="stu" table="stu" inverse="true"> <!-- 指定关联的外键列 --> <key column="gid"></key> <one-to-many class="com.entity.Student"/> </set>
    查看全部
  • 配置双向的关联关系: 1、分别在持久化类中定义另一方的引用; 一方:private Set<Student>students=new HashSet<Student>();并setter、getter 多方:private Grade grade;并setter、getter; 2、在一方映射文件配置一对多属性集合与在多方配置多对一关联关系 //在一方配置关联关系 <set name="一方实体类定义的多方的引用,即多方属性Students" table="多方的表名"> <key column="关联外键的列gid"></key> <one-to-many class="多方实体类的全类名com.imooc.entity.Student" ></one> </set> //在多方配置关联关系 <many-to-one name="指定对应的属性的名称" class="对应实体类的全类名com.imooc.entity.Grade" column="指定外键的列名gid" > </many-to-one> //测试方法 public static void save(){ Grade g=new Grade("Java一班", "Java软件开发一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //创建多对一的配置 g.getStu().add(s1); g.getStu().add(s2); s1.setGrade(g); s2.setGrade(g); Session session=HibernateUtil.getSession(); Transaction transaction=session.beginTransaction(); session.save(g); session.save(s1); session.save(s2); transaction.commit(); HibernateUtil.closeSession(session); }
    查看全部
  • //单向多对一之添加学生信息 public static void save(){ Grade g=new Grade("Java一班", "Java软件开发一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //创建多对一的配置 s1.setGrade(g); s2.setGrade(g); Session session=HibernateUtil.getSession(); Transaction transaction=session.beginTransaction(); session.save(g); session.save(s1); session.save(s2); transaction.commit(); HibernateUtil.closeSession(session); }
    查看全部
  • 单向多对一的配置: 1.在多方持久类定义一方的引用 private Grade grade;并getter,setter 2.在多方的映射文件中添加 <many-to-one name="指定对一方的引用,即一方引用所定义的属性grade" class="一方对应的持久化类,即关联实体类com.imooc.entity.Grade" cloumn="外键的列名gid" ></many-to-one>
    查看全部
  • 单向多对一关联: 1.多对一的关系和关系数据库中的外键参照关系最匹配,即在己方(多方)表中的一个外键参照另一个表的主键; 2.通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置
    查看全部
  • 一对多映射 一、简介 什么是一对多的关系呢? 如同班级与学生的关系,站在班级的角度看,班级为一方,学生为多方,这种关系是单向的。 如何实现一对多的关系呢? 1.在数据库中,可以通过添加主外键的关联,表现一对多的关系; 2.在java中,通过在一方持有多方的集合实现,即在“一”的一端中使用<set>元素表示持有“多”的一端的对象。 二、实例 (1)创建HibernateUtil工具类 1.hibernate初始化 2.获取sessionFactory和session对象 3.关闭session对象 (2)在MySQL中创建表 1.创建班级表 2.创建学生表 (3)创建持久化类和映射文件并配置单向一对多关系 a.持久化类 1.创建学生持久化类 2.创建班级持久化类(在一方定义一个多方集合) b.配置映射文件 1.班级映射文件(配置单向一对多关系) 2.学生映射文件 3.hibernate.cfg.xml中指定映射文件、 (4)测试 1.添加和查询学生信息 2.修改和删除学生信息
    查看全部
  • 创建持久化类和映射文件并配置单向一对多关系 a.持久化类 1.创建学生持久化类 2.创建班级持久化类(在一方定义一个多方集合) b.配置映射文件 //班级映射文件 <class name="com.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" not-null="true" length="20"></column> </property> <property name="gdesc" type="java.lang.String"> <column name="gdesc"></column> </property> <!-- 配置单向一对多关系 --> <set name="一方实体类定义的多方的引用,即集合属性students" table="多方的表名Students"> <key column="关联外键的列gid"></key> <one-to-many class="多方实体类的全类名com.entity.Student"></one> </set> </class> //学生映射文件(同上略) //hibernate.cfg.xml中配置 <!-- 指定映射文件 --> <mapping resource="com/entity/Grade.hbm.xml"></mapping> <mapping resource="com/entity/Student.hbm.xml"></mapping>
    查看全部
  • test
    查看全部
  • hibernate对应数据类型
    查看全部
  • cascade属性——————级联属性
    查看全部
  • 配置一对多
    查看全部
  • Set元素的常用属性
    查看全部

举报

0/150
提交
取消
课程须知
本课程主要讲解Java中Hibernate中的关联映射,需要对Hibernate基本用法、ORM的基本概念、单表映射等相关知识有一定的基础。
老师告诉你能学到什么?
1、Hibernate关联映射的类型 2、单向一对多关联的配置 3、单向多对一关联的配置 4、cascade和inverse属性的作用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!