码迷,mamicode.com
首页 > Web开发 > 详细

hibernate中的cascade和inverse

时间:2015-05-26 23:04:33      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

  在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>

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

hibernate中的cascade和inverse

标签:

原文地址:http://www.cnblogs.com/Jc-zhu/p/4531819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!