hibernate-关系映射

原创 2016年05月31日 23:14:06

 hibernate中关系映射指的是实体类与实体类间的关系。和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系。

 

一:一对一映射

   两个对象之间是一对一的关系,如人和身份证之间是一对一的关系。

   实现一对一映射有两种方式,一种是主键约束,一种是外键约束

    1,主键约束

     数据库表不会有额外的字段维护他们之间的关系,仅通过表的主键来关联

       1)对象模型                          

       2)关系模型                          

   2,外键约束

   在一种一个对象中加入另一个对象的属性

     1)对象模型                          

     2)关系模型                              

   3)xml中配置

    由于IDCard 身份证实体类是被引入,它的配置文件不发生变化,Person类的配置文件中需要做相应配置,又由于在人的一段能看到卡的信息,配置信息时,需要注意在引入的一方使用many-to-one标签   

    主要:many-to-one标签中的name属性是IDCard对象主键字段前面加上get字段。

二:多对一

 多对一映射,如学生和班级之间的关系,多个学生对应一个班级。

 1, 对象模型中是在多的一方对象中加入一的一方对象的引用。配置文件参见上图所示。

 2,注解使用

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. @Entity  
  2. public class Person {  
  3.     private int id;  
  4.     private String name;  
  5.     private IDCard cid;  
  6.   
  7.     @ManyToOne  
  8.     @JoinColumn(name="cardid")  
  9.     public IDCard getcid() {  
  10.         return cid;  
  11.     }  

 用@JoinColumn来指定外键的字段名

三:一对多

   一对多的映射,如班级和学生的关系,一个班级中有多个学生。

  1,对象模型中是在一的一端添加Set集合,包含多的一端。

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. public class Classes{  
  2.       
  3.     private int cid ;  
  4.     private String cname ;  
  5.       
  6.     <strong>private Set<Student> studentSet = new HashSet<Student>(); /</strong>/一对多  
  7.       
  8.     public int getCid() {  
  9.         return cid;  
  10.     }  
  11.     public void setCid(int cid) {  
  12.         this.cid = cid;  
  13.     }  
  14.     public String getCname() {  
  15.         return cname;  
  16.     }  
  17.     public void setCname(String cname) {  
  18.         this.cname = cname;  
  19.     }  
  20.     public Set<Student> getStudentSet() {  
  21.         return studentSet;  
  22.     }  
  23.     public void setStudentSet(Set<Student> studentSet) {  
  24.         this.studentSet = studentSet;  
  25.     }  
  26. }  

 2,配置文件

     1)在多的一端课程,使用set标签并使用one-to-many标签

     2)在一的一端学生,使用many-to-one标签

 3,注解

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. @OneToMany//进行注解为一对多的关系  
  2. @JoinColumn(name="classesId")//在多的一端注解一个字段(名为classessid)  
  3. public Set<Student> getStudents() {  
  4.     return students;  
  5.        }  
   在set集合属性的get方法前面使用@OneToMany注解


三:多对多

  多对多映射关系,还拿学生课程关系,多个学生对应多个课程,多个课程对应多个学生

  1,在对象模型中是双方都加入set集合

  2,xml配置文件中,双方也都用set标签和many-to-many标签

  3,注解

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1.     @ManyToMany  
  2.     @JoinTable(name="t_s_c",//使用@JoinTable标签的name属性注解第三方表名称  
  3.         joinColumns={@JoinColumn(name="courseId")},  
  4.     //使用joinColumns属性来注解当前实体类在第三方表中的字段名称并指向该对象  
  5.         inverseJoinColumns={@JoinColumn(name="studentId")}    
  6.    //使用inverseJoinColumns属性来注解当前实体类持有引用对象在第三方表中的字段名称并指向被引用对象表  
  7. )  
  8. public Set<Student> getStudents() {return Students;}  
版权声明:本文不足之处在所难免,敬请各位批评指正,留下宝贵意见。

用hibernate+注解实现各种关系映射

本文转自:http://blog.csdn.net/bigtree_3721/article/details/42343639 基本环境准备     我们先来看看一个具体的JPA工程示例。...
  • hefangju
  • hefangju
  • 2015年12月22日 23:21
  • 3367

Hibernate多对多关系映射

多对多关系并不是两张表的关系,而是三张表的关系,而且要求必须有一个中间表,中间表必须只有两个字段,必须为复合主键,必须包含外键。 如果以上条件都满足,MyEclipse在三张表一起选择时,就可以生成...
  • u013189665
  • u013189665
  • 2014年03月20日 13:08
  • 1684

Hibernate对象关系映射(一)

Hibernate 的本质是对象关系映射,ORM实现了将对象的变化保存到数据库中。以前我们对关系表操作,执行增CRUD。现在我们不在对关系表进行操作,而是直接对对象操作。对象关系的映射有以下几种 基本...
  • han_yankun2009
  • han_yankun2009
  • 2014年11月30日 23:59
  • 1422

hibernate(多对多关系映射)

  • 2017年07月19日 21:25
  • 8.4MB
  • 下载

Hibernate教程14_关系映射之多对多双向关联

  • 2013年04月13日 14:10
  • 7.38MB
  • 下载

hibernate关系映射

  • 2014年05月09日 21:16
  • 4.96MB
  • 下载

hibernate5--3.映射关系

  • 2017年03月10日 08:01
  • 15.78MB
  • 下载

对象-关系映射—Hibernate 培训 (中文)

  • 2008年12月27日 17:07
  • 165KB
  • 下载

Hibernate关系映射XML生成工具

  • 2013年02月08日 14:57
  • 2.36MB
  • 下载

Hibernate关系映射

  • 2013年06月12日 23:28
  • 498KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate-关系映射
举报原因:
原因补充:

(最多只允许输入30个字)