hibernate 映射关系 一对多/多对一

 一对多:

类 Child:
public  class  Child   {
        private  Integer  id  ;
        private  String  childname  ;
        private  Set<Toy>  toys  =  new  HashSet<Toy>();
     ...
映射文件:
        < class  name = "Child"  >
              < id  name = "id"  >
                    < generator  class = "native"  ></ generator >
              </ id >
              < property  name = "childname"  ></ property >
              < set  name = "toys"  >
                    < key  column = "childId"  ></ key >
                    < one-to-many  class = "Toy"  />
              </ set >
        </ class >

类 Toy:
public  class  Toy {
        private  Integer  id  ;
        private  String  toyname  ;
        private  Child  child  ;
     ...
映射文件:
        < class  name = "Toy"  >
              < id  name = "id"  >
                    < generator  class = "native"  ></ generator >
              </ id >
              < property  name = "toyname"  ></ property >
              < many-to-one  name = "child"  column = "childId"  class = "Child"  ></ many-to-one >
        </ class >

测试后的表结构:

Child



Toy
hibernate 映射关系 一对多/多对一_第1张图片

结论:
   从数据库的考虑
     所谓多对一,就是在另外一张表中(多的一方)有外键只想 另一方。
     在上图标表结构可以看出 toy 表中 没调数据都有指向  child 的 一个外键。
   从面相对象的思想来考虑:
     即 一个Child 对象有多个 Toy对象。所以有在 Chilc 中有集合toys属性。
     同时 一个Toy 对象属于某一个 Child 对象。所有有了 child 属性
注意:
     映射文件 中 set 集合众key 对应的外键(其他表只想 本表的外键)字段。
     so key colum 的属性是有另外一个映射文件决定。colum 属性值 要一致。
     



你可能感兴趣的:(Hibernate,一对多关系映射)