Hibernate从入门到精通(九)一对多双向关联映射

 上次的博文Hibernate从入门到精通(八)一对多单向关联映射我们讲解了一下一对多单向映射的相关内容,这次我们讲解一下一对多双向映射的相关内容。

一对多双向关联映射

       一对多双向关联映射,即在一的一端存在多的一端的一个集合对象,在多的一端存在一的一端的一个对象,这样就可以保证在加载一的一端或多的一端将被指向端的集合或对象加载上来,即保证双向关联。


一对多双向关联映射和一对多单向关联映射的异同

       一对多双向关联映射相应的类结构图和代码。具体如下:


[java]  view plain  copy
 print ?
  1. public class Classes {    
  2.     private int id;   
  3.     private String name;      
  4.     private Set students;  
  5.       
  6.     public int getId() {  
  7.         return id;  
  8.     }  
  9.     public void setId(int id) {  
  10.         this.id = id;  
  11.     }  
  12.     public String getName() {  
  13.         return name;  
  14.     }  
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.     public Set getStudents() {  
  19.         return students;  
  20.     }  
  21.     public void setStudents(Set students) {  
  22.         this.students = students;  
  23.     }     
  24. }  
  25.   
  26. public class Student {  
  27.     private int id;   
  28.     private String name;      
  29.     private Classes classes;  
  30.   
  31.     public int getId() {  
  32.         return id;  
  33.     }  
  34.     public void setId(int id) {  
  35.         this.id = id;  
  36.     }  
  37.     public String getName() {  
  38.         return name;  
  39.     }  
  40.     public void setName(String name) {  
  41.         this.name = name;  
  42.     }  
  43.     public Classes getClasses() {  
  44.         return classes;  
  45.     }  
  46.     public void setClasses(Classes classes) {  
  47.         this.classes = classes;  
  48.     }  
  49. }  

       通过对比之前我们在上篇博文Hibernate从入门到精通(八)一对多单向关联映射中的关于一对多单向关联映射的相应的类结构图和代码。可以发现,一对多双向关联向和单向关联的区别主要是在多的一端加入了一的一端的对象,这就将单向关联变成了双向关联

       为了更好说明两者的区别,我们再看一下一对多双向关联映射的表结构和相应的Hibernate映射配置。具体如下:

[html]  view plain  copy
 print ?
  1. <class name="com.zs.hibernate.Classes" table="t_classes">  
  2.     <id name="id">  
  3.         <generator class="native"/>  
  4.     </id>  
  5.     <property name="name"/>  
  6.     <set name="students" inverse="true">        
  7.         <key column="classesid"/>  
  8.         <one-to-many class="com.zs.hibernate.Student"/>  
  9.     </set>  
  10. </class>  
  11.   
  12. <class name="com.zs.hibernate.Student" table="t_student">  
  13.     <id name="id">  
  14.         <generator class="native"/>  
  15.     </id>  
  16.     <property name="name"/>  
  17.     <many-to-one name="classes" column="classesid"/>  
  18. </class>  

       从存储结构上看,一对多单向关联和双向关联没有什么区别,但是从配置文件上看,一对多双向关联的配置文件中在多的一端的配置文件上存在<many-to-one />的相关配置,即保证多对一的映射,这就保证了双向。


       通过本次的讲解,关于一对多双向关联的内容,我们就讲解完毕了,一对多映射是一个比较常用和重要的映射关系,希望读者认真思考这部分内容,下次我们讲多对多映射的相关内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值