hibernate学习笔记(多对多关联关系)
来源:互联网 发布:数据库的安全性设计 编辑:程序博客网 时间:2024/06/05 09:22
多对多关联关系:本质上就是两个一对多的关系,
例如:一个学生可以选择多门课程。一门课程可以被很多学生选择。
体现在代码中如下;学生类:
private String id;//学生idprivate String name;//学生姓名private Set<Course> course;//学生选择的课程集合public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Course> getCourse() {return course;}public void setCourse(Set<Course> course) {this.course = course;}课程类:
private String id;//课程idprivate String name;//课程名称private Set<Student> student;//学生集合public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<Student> getStudent() {return student;}public void setStudent(Set<Student> student) {this.student = student;}关键就是两个映射文件了。
student.hbm.xml映射文件
<class name="com.test.bean1.Student" table="student"><id name="id" column="id" type="string"><generator class="uuid"/></id><property name="name" column="name" type="string"/><set name="course" table="student_course" cascade="save-update" ><key column="student_id"/><!-- 这个student_id是中间关联表的id,根据这个id可以关联到student表 --><!-- class:表示关联的类型。column:表示根据course_id可以关联到course表 --><many-to-many class="com.test.bean1.Course" column="course_id" /></set></class>course.hbm.xml映射文件;
<class name="com.test.bean1.Course" table="course"><id name="id" column="id" type="string"><generator class="uuid"/></id><property name="name" column="name" type="string"/><!-- 这里的配置和上面的一样,有一点就是inverse为true;表示对方维护这种关联关系。为false:表示主动方;由主动方维护这种关联关系 --><set name="student" table="student_course" cascade="save-update" inverse="true" ><key column="course_id"/><many-to-many class="com.test.bean1.Student" column="student_id" /></set></class>最后来个测试吧:
Session session=sessionfactory.openSession();Transaction tx=null;//Student student=new Student();//student.setName("zhangsan");//student.setCourse(new HashSet<Course>());////Course course=new Course();//course.setName("英语");//course.setStudent(new HashSet<Student>());////添加记录//student.getCourse().add(course);//course.getStudent().add(student);//try {tx=session.beginTransaction();//查询到张三学生。没用延迟加载。所以把对应的课程表的信息也查出来了。Student student=(Student)session.get(Student.class, "4028ab81385bdd9b01385bdd9d030001");//查询到数学这门课程//Course course=(Course)session.get(Course.class, "4028ab81385be0c001385be0c2db0002");//删除信息//student.getCourse().remove(course);//已经查询到了张三的信息。和数学课程的信息。所以可以讲数学这门课程让张三选中//student.getCourse().add(course);//course.getStudent().add(student);//遍历张三学生的所选课程Set<Course> course=student.getCourse();for(Iterator<Course> iter=course.iterator();iter.hasNext();){System.out.println(iter.next().getName());}tx.commit();} catch (Exception e) {if(null!=tx)tx.rollback();e.printStackTrace();}finally{session.close();}省略了获取session的代码了。
- hibernate学习笔记(多对多关联关系)
- 《Hibernate学习笔记十》:多对多关联关系详解
- Hibernate学习笔记 -- day09 多对多关联关系
- Hibernate学习笔记8--关联关系之一对多
- Hibernate学习笔记10--关联关系之多对多
- Hibernate关联关系之一对多关联
- hibernate关联关系之多对多关系
- Hibernate学习笔记:多对多的关联关系(many-to-many)
- Hibernate学习笔记:多对多的关联关系(many-to-many)
- 【学习笔记】实例解说Hibernate 一对多、多对一关联关系
- 《Hibernate学习笔记九》:多对一和一对多的关联关系
- 《Hibernate学习笔记九》:多对一和一对多的关联关系
- Hibernate学习_013_多对多关联关系
- Hibernate中关联关系:多对一的学习
- Hibernate学习笔记---------------多对多关系
- Hibernate -- 映射实体关联关系(多对多关联关系)
- Hibernate关联关系映射之一对多关联关系
- Hibernate关联关系映射之多对多关联关系
- HDFS1.0源代码解析—Hadoop的RPC机制之Client解析
- http pipeline
- HTML5全球普及加速:有望终结iOS与安卓界限
- android 短信自动转发功能
- NXP的ARM7带ucos中硬中断与软中断响应详细分析(转)
- hibernate学习笔记(多对多关联关系)
- 数据结构 - 如何删除单向链表的倒数第m个元素?
- ffmpeg 转换VC工具 V1.1.2 支持android.mk工程文件生成
- Hg Mercurial 邮件更新版本库
- 发布app到GoogLe Market教程
- showModalDialog的简单应用
- displaytag用法总结
- 0-1背包问题
- L2tp flow