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

Hibernate初探之一对多映射

  • cascade属性: 1、当设置了cascade属性不为none时,Hibernate会自动持久化所关联的对象; 2、cascade属性的设置会带来性能上的变动,需要谨慎设置; ———————————————————————————— 属性值 含义和作用 all 对所有操作进行级联操作 save-update 执行保存和更新操作时进行级联操作 delete 执行删除时进行级联操作 none 对所有操作不进行级联操作 ———————————————— 说明: 1.在向Grade添加Student后,保存Grade对象时,能不能不需要显示的保存Student对象,答案是可以的,可以使用级联操作:在Grade的映射文件中的<set>节点添加cascade属性不为none,为"save-update"; 2.在向Student添加Grade后,保存Student对象时,能不能不需要显示的保存Grade对象,答案是可以的,可以使用级联操作:在Student的映射文件中的<many-to-one>节点添加cascade属性不为none,为"save-update".
    查看全部
  • 配置双向的关联关系: 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); }
    查看全部
  • 单向多对一关联: 1.多对一的关系和关系数据库中的外键参照关系最匹配,即在己方的表中的一个外键参照另一个表的主键 2.通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置 // 在一对多的一方,定义一个集合表示多方 private Set<Students> students = new HashSet<Students>(); <set name="students" table="STUDENTS" inverse="false" lazy="true"> <key> <column name="GID" /> </key> <one-to-many class="com.Students" /> </set>
    查看全部
  • 在"一"保存"多"的集合创建一对多关系: 1.在插入"一"的数据时,首先将"一"的元素(除了建立一对多关系的集合)添加到对应表项,然后根据集合元素到"多"对应的表中更新"多"的参照数据(集合只用于更新"多"的数据,而不会作为"一"的数据保存) 2.可以直接(不用二次查表)通过"一"得到相应的"多",反之不行(导航查询要注意方向:一到多)
    查看全部
  • 什么是一对多的关系呢? 就像班级和学生。站在班级的角度看。班级和学生就是一对多的关系。单向的 那怎么样实现这种关系呢? 1.在数据库中,可以通过添加主外键的关联,表现一对多的关系; 2.在java中,通过在一方持有多方的集合实现,即在“一”的一端中使用<set>元素表示持有“多”的一端的对象。
    查看全部
  • Hibernate的映射类型: 一对多 (one-to-many) 多对一 (many-to-one) 一对一 (one-to-one) 多对多 (many-to-many)
    查看全部
  • 添加外键
    查看全部
  • soputasmile 感觉老师讲的inverse的理解有问题,inverse表示是否将控制权交给对方,为true表示交给对方,自己变成被空方。在一对多中,在一方设置inverse为true的话,g.add(stu),session.save(g),设置级联为save-update,在数据库中学生的外键其实为空,也就是说,其实在一方设置inverse为true,实际上是表示由多方维护关系,而g.add(stu)是多方在执行,所以没有维护 时间: 2017-03-22 4
    查看全部
  • java数据类型对应的hibernate数据类型:
    查看全部
  • 实现为项目添加Hibernate支持 右击项目-->MyEclipse-->Add Hibernaet Capabilities-->选择hibernate版本(越高越好)-->...-->选择数据库连接-->.. 它能生成XXX.cfg.xml 文件还能生成HibernateSessionFactory工具类简化我们的操作
    查看全部
  • MyEclipse 给工程添加hibernate支持 菜单Windws-->Show-->View-->Other,展开MyEclipse Datebase 选择DB Browser(数据库视图) 左侧空白右击,New-->DatebaseDriver 选择相应数据库 给连接命名,指定DB URl-->user /password--> Driver JARs :点击Add JARS 选择JAR包 可点击Test Driver 可勾选save password
    查看全部
  • cascade(级联)属性
    查看全部
  • inverse属性的用法
    查看全部
  • 双向一对多映射的建立: 以一对多,多对一的方式配置两个持久化类的hbm.xml,然后用代码相互添加对方的引用,就行了。 不过这样,一对多的hbm.xml会多执行一次维护双方关系的sql语句,即班级再次设置学生的gid。这样会影响性能。提高性能的方法要用到inverse属性。
    查看全部
  • 单向多对一关系: 测试代码。 *在一对多关系中,在一方建立多方的集合。然后将多方添加进集合,进行保存。 *在多对一关系中,在多方建立一方的引用。然后对一方的引用赋值,进行保存。 //单向多对一之添加学生信息 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); }
    查看全部

举报

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

微信扫码,参与3人拼团

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

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