hibernate_09_关联映射_多对一

多对一关联关系和上一篇讲的一对多关联关系的不同点主要体现在映射文件上。

Student类:

 1 package com.imooc.entity;
 2
 3 import java.io.Serializable;
 4
 5 public class Student implements Serializable {
 6
 7     private int sid;
 8     private String sname;
 9     private String sex;
10     // 在多方定义一个一方的引用
11     private Grade grade;
12
13     public int getSid() {
14         return sid;
15     }
16     public void setSid(int sid) {
17         this.sid = sid;
18     }
19     public String getSname() {
20         return sname;
21     }
22     public void setSname(String sname) {
23         this.sname = sname;
24     }
25     public String getSex() {
26         return sex;
27     }
28     public void setSex(String sex) {
29         this.sex = sex;
30     }
31     public Grade getGrade() {
32         return grade;
33     }
34     public void setGrade(Grade grade) {
35         this.grade = grade;
36     }
37
38     public Student() {
39         super();
40     }
41
42     public Student(String sname, String sex) {
43         super();
44         this.sname = sname;
45         this.sex = sex;
46     }
47
48 }

View Code

Grade类:

 1 package com.imooc.entity;
 2
 3 import java.io.Serializable;
 4 import java.util.HashSet;
 5 import java.util.Set;
 6
 7
 8 public class Grade implements Serializable {
 9
10     private int gid;
11     private String gname;
12     private String gdesc;
13     private Set<Student> students = new HashSet<Student>();
14
15     public int getGid() {
16         return gid;
17     }
18     public void setGid(int gid) {
19         this.gid = gid;
20     }
21     public String getGname() {
22         return gname;
23     }
24     public void setGname(String gname) {
25         this.gname = gname;
26     }
27     public String getGdesc() {
28         return gdesc;
29     }
30     public void setGdesc(String gdesc) {
31         this.gdesc = gdesc;
32     }
33     public Set<Student> getStudents() {
34         return students;
35     }
36     public void setStudents(Set<Student> students) {
37         this.students = students;
38     }
39
40     public Grade() {
41         super();
42     }
43
44     public Grade(int gid, String gname, String gdesc) {
45         super();
46         this.gid = gid;
47         this.gname = gname;
48         this.gdesc = gdesc;
49     }
50
51     public Grade(String gname, String gdesc) {
52         super();
53         this.gname = gname;
54         this.gdesc = gdesc;
55     }
56 }

View Code

Student.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final -->
 5 <hibernate-mapping>
 6     <class name="com.imooc.entity.Student" table="STUDENT">
 7         <id name="sid" type="int">
 8             <column name="SID" />
 9             <generator class="increment" />
10         </id>
11         <property name="sname" type="java.lang.String">
12             <column name="SNAME" />
13         </property>
14         <property name="sex" type="java.lang.String">
15             <column name="SEX" />
16         </property>
17         <!-- 配置多对一关联关系 -->
18         <many-to-one name="grade" class="com.imooc.entity.Grade" column="gid" cascade="all"></many-to-one>
19     </class>
20 </hibernate-mapping>

View Code

Grade.hbm.xml

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final -->
 5 <hibernate-mapping>
 6     <class name="com.imooc.entity.Grade" table="GRADE">
 7         <id name="gid" type="int">
 8             <column name="GID" />
 9             <generator class="increment" />
10         </id>
11         <property name="gname" type="java.lang.String">
12             <column name="GNAME" length="20" not-null="true" />
13         </property>
14         <property name="gdesc" type="java.lang.String">
15             <column name="GDESC" />
16         </property>
17     </class>
18 </hibernate-mapping>

View Code

hibernate.cfg.xml文件保持不变

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <property name="connection.username">root</property>
 8         <property name="connection.password">root</property>
 9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
10         <property name="connection.url">
11             <![CDATA[
12                 jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8
13             ]]>
14         </property>
15         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
16         <property name="show_sql">true</property>
17         <property name="format_sql">true</property>
18         <property name="hbm2ddl.auto">update</property>
19
20         <!-- 指定映射文件的路径 -->
21         <mapping resource="com/imooc/entity/Grade.hbm.xml" />
22         <mapping resource="com/imooc/entity/Student.hbm.xml" />
23     </session-factory>
24 </hibernate-configuration>

View Code

Test测试类:

 1 package com.imooc.test;
 2
 3 import org.hibernate.Session;
 4 import org.hibernate.Transaction;
 5
 6 import com.imooc.entity.Grade;
 7 import com.imooc.entity.Student;
 8 import com.imooc.util.HibernateUtil;
 9
10 /*
11  * 单向多对一(学生--->班级)
12  */
13 public class Test {
14
15     public static void main(String[] args) {
16         save();
17     }
18
19     public static void save() {
20         Grade g = new Grade("java一班", "Java软件开发一班");
21         Student s1 = new Student("杨过","男");
22         Student s2 = new Student("小龙女", "女");
23
24         // 设置关联关系
25         g.getStudents().add(s1);
26         g.getStudents().add(s2);
27         s1.setGrade(g);
28         s2.setGrade(g);
29
30         Session session = HibernateUtil.getSession();
31         Transaction tr = session.beginTransaction();
32         session.save(g);
33         session.save(s1);
34         session.save(s2);
35         tr.commit();
36         HibernateUtil.closeSession(session);
37     }
38 }

View Code

posted on 2017-06-04 18:39 tzzt01 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/tzzt01/p/6941434.html

hibernate_09_关联映射_多对一相关推荐

  1. Hibernate 关联映射 之 多对多 关联(二) 之拆分

    1.由问题引出一个多对多拆分成两个多对一 问题:Hibernate 关联映射 之 多对多 关联(一)中中间表只是一个存放用户和角色的表,并无其他作用,如果客户有其他的需求,该表就无法扩展. 2.问题解 ...

  2. 【Hibernate步步为营】--关联映射之多对一

    上篇文章讨论了Hibernate的基本映射,一个实体类对应着一张表,在相应的Hibernate Mapping文件中使用<class>标签映射.并且实体类中的普通属性对应着表字段,使用&l ...

  3. Hibernate 关联映射 之 多对多 关联(一)

    1.了解几个知识点: 一.一般的设计中,多对多关联映射,需要一个中间表 二.Hibernate会自动生成中间表 三.Hibernate使用many-to-many标签来表示多对多的关联 四.多对多的关 ...

  4. hibernate关联映射:多对一、一对一

    配置对象关联关系 - 单向一对多关系 - 例如:班级与学生 Grade类中 public class Grade{private int gid;private String gname;privat ...

  5. hibernate关联映射_具有关联映射的Hibernate Composite ID

    hibernate关联映射 最近,我们面临着带有复合id字段的Hibernate关联映射的棘手情况. 我们需要与一对一和多对一进行双向关联.我们的拖曳表是" REPORT"和&qu ...

  6. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...

  7. [置顶] Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  8. [置顶] Hibernate从入门到精通(十一)多对多双向关联映射

    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看一 ...

  9. Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  10. Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射

    在我们以前的数据库设计中,设计表就不是一件轻松的事情.多种事物之间往往都是有这样那样的关系的.那怎样设计表格,才能既将事情描述明白,又能使数据库设计的比较合理呢?那里我们提供了好多规范,好多约束来满足 ...

最新文章

  1. mysql按特定的顺序_如何在MySQL中按特定顺序排列数据?
  2. 驱动开发基础知识 偶然发现的,很全面
  3. mysql数据库电脑配置_教你怎样正确配置MySQL数据库SQL Mail -电脑资料
  4. sql 存储过程分页
  5. 群论在计算机应用技术,群论在计算机全领域中应用.ppt
  6. 简述神经网络的优点和缺点,人工神经网络优缺点
  7. MongoDB和Compass安装教程
  8. 锐浪HTML5报表实际应用方法,解决锐浪Grid++报表在谷歌等浏览器不兼容的尴尬局面
  9. Android深色模式适配
  10. html动画 箭头线条,html – 悬停时动画的箭头线
  11. 霍夫斯特拉大学计算机科学专业排名,美国霍夫斯特拉大学的最新排名
  12. android power 按键,android 添加按(power键)电源键结束通话(挂断电话)
  13. 【个人喜好诗词之一】归去来兮辞
  14. cla作用matlab,健身搞肌运动补剂小讲堂:共轭亚油酸CLA功效解析
  15. mysql explain row_MySQL explain详解
  16. python爬b站视频_python代码福利:用requests爬取B站视频封面
  17. sqoop 导出hive数据到MySQL数据库当中
  18. 【Golang开发面经】深信服(两轮技术面)
  19. TDW计算引擎解析——Scheduler
  20. Python商品数据预处理与K-Means聚类可视化分析

热门文章

  1. JAVA面试之互联网、经验篇
  2. 微服务架构如何实现网站服务垂直化拆分
  3. 该来的终于来了:“第一起”基于 IPv6 的 DDoS 攻击
  4. php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
  5. python searchsorted_Python 二分查找与 bisect 模块
  6. 基于左子结点/右兄弟结点表示法和二叉链表来实现二叉树ADT
  7. 关于线上问题处理心得分享
  8. 什么时候用DFS,什么时候用BFS?(DFS和BFS的特点和异同)
  9. 理解unittest(六)
  10. BZOJ1468: Tree BZOJ3365: [Usaco2004 Feb]Distance Statistics 路程统计