zoukankan      html  css  js  c++  java
  • hibernate中的cascade和inverse

      在hibernate中表间的关系维护是最重要的,而这又与cascade和inverse是分不开的。

      表结构:学生和课程是多对多的关系,通过第三张表来映射来者间的关系。

      类结构:

      下面来保存一些数据:

    @Test
    	public void save() {
    		Session session = factory.openSession();
    		session.getTransaction().begin();
    		
    		Course course = new Course();
    		course.setCname("数学");
    		Course course1 = new Course();
    		course1.setCname("语文");
    		
    		Student stu =  new Student();
    		stu.setSname("张三");
    		Student stu1 =  new Student();
    		stu1.setSname("李四");
    		//在代码中是course维护两者间的关系,因此需要将对应的映射文件中的inverse设为false,如果设置为true,则会导致第三张表为空
    		course.getStu().add(stu);
    		course.getStu().add(stu1);
    //因为是course建立关系,所以在代码中是保存course,但是将对应的映射文件中的cascade设置为all,因此在保存course的同时也会保存student,如果不做此设置则会报错,因为学生类不会保存
    //如果是course建立关系,而代码中保存student是不会保存course的,因为级联是两者建立关系才会起作用 session.save(course); session.save(course1); session.getTransaction().commit(); session.close(); }

      对应的映射文件如下:

      <set name="stu" table="course_stu" cascade="all" inverse="true">
            	<key>
            		<column name="cid"></column>
            	</key>
            	<many-to-many class="Student" column="sid"></many-to-many>
            </set>
    

      【一对多中是多的一方维护关系,多对多中在页面现实的一方维护关系】

  • 相关阅读:
    双向认证SSL原理
    p12证书转keystore签名
    Loadrunner对https协议(单双向SSL)的web端性能测试
    关于Unity中新版动画系统的使用
    关于Unity中旧版动画系统的使用
    关于Unity中Mesh网格的详解
    关于Unity中Time.deltaTime的使用
    关于Unity中的光照(七)
    关于Unity中的光照(六)
    关于Unity中的光照(五)
  • 原文地址:https://www.cnblogs.com/Jc-zhu/p/4531819.html
Copyright © 2011-2022 走看看