java技術

          hibernate spring struts

          BlogJava 聯系 聚合 管理
            18 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks

          5.1    一對一映射
          雙向一對一關系需要在關系維護端(owner side)的one2one Annotition定義mappedBy屬性。建表時在關系被維護端(inverse side)建立外鍵列指向關系維護端的主鍵列。
          假設Country 和 Capital 是雙向一對一的關系,具體元數據聲明如下:

          public class Country {       
          @OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "country")       
          private Capital capital;
          }

          public class Capital {       
          @OneToOne(optional = false, cascade = CascadeType.ALL)       
          @JoinColumn(name = "COUNTRY_ID", referencedColumnName = "id")       
          private Country country;                                      

          代碼中元數據的說明:
          元數據描述:
          @OneToOne(optional = true,cascade = CascadeType.ALL, mappedBy = "country")
          optional聲明關系是否是必須存在的,即是否允許其中一端為null。
          cascade聲明級聯操作。
          @JoinColumn(name = "COUNTRY_ID", referencedColumnName = "id")
          name聲明外鍵列的名字,referencedColumnName聲明外鍵指向列的列名。

          5.2   一對多映射
          雙向一對多關系,一是關系維護端(owner side),多是關系被維護端(inverse side)。 建表時在關系被維護端建立外鍵列指向關系維護端的主鍵列。
          假設Father 和 Child 是雙向一對多的關系,具體元數據聲明如下:
          public class Father {       
          @OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL, mappedBy = "father")       
          public List<Child> getChildren() {              
          return children;        }
          }

          public class Child {       
          @ManyToOne       
          @JoinColumn(name = "FATHER_ID", referencedColumnName = "id")       
          public Father getFather() {              
          return father;       
          }
          }
           
          代碼中元數據的說明:元數據描述:
          @OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL, mappedBy = "father")
          targetEntity = Child.class表明關系另一端的實體類型
          cascade聲明級聯操作。
          mappedBy聲明關系維護端的字段(field)名。
          @ManyToOne
          @JoinColumn(name = "FATHER_ID", referencedColumnName = "id")
          name聲明外鍵列的名字,referencedColumnName聲明外鍵指向列的列名。

          5.3     多對多映射
          多對多映射采取中間表連接的映射策略,建立的中間表將分別引入兩邊的主鍵作為外鍵。
          EJB3對于中間表的元數據提供了可配置的方式,用戶可以自定義中間表的表名,列名。
          假設Teacher 和 Student是多對多的關系,具體元數據聲明如下:
          pubic class Teacher{       
          @ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST)       
          @JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"),       
          joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"), 
          inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"))       
          public List<Student> getStudents() {
          return students;
          }                                     
          }

          public class Student{       
          @ManyToMany(targetEntity = Teacher.class, mappedBy = "students")       
          public List<Teacher> getTeachers() {              
          return teachers;        }
          }

          代碼中元數據的說明:
          元數據描述:
          @ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST)
          targetEntity = Student.class表明關系另一端的實體類型。cascade聲明級聯操作。
          @JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"),
          joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"),
          inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"))
          JoinTable配置中間表信息,它由3個部分組成:
          1) table = @Table(name = "M2M_TEACHER_STUDENT") ,聲明中間表的名字
          2) joinColumns ,定義中間表與關系維護端的外鍵關系。
          3) inverseJoinColumns,定義中間表與inverse端的外鍵關系.

          本文來自CSDN博客,出處:http://blog.csdn.net/senton/archive/2007/03/15/1529969.aspx

          posted on 2009-11-05 12:40 just 閱讀(1349) 評論(1)  編輯  收藏

          Feedback

          # re: JPA 映射 2013-08-16 12:15 ew
          而無法為  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 金寨县| 北川| 白河县| 文登市| 鱼台县| 平阳县| 呈贡县| 治县。| 屯门区| 保德县| 若尔盖县| 阿尔山市| 余江县| 林芝县| 唐海县| 温泉县| 芮城县| 呼玛县| 偏关县| 壶关县| 塘沽区| 同德县| 得荣县| 澄江县| 潮州市| 内黄县| 温州市| 惠水县| 蓝山县| 邻水| 青田县| 民勤县| 嘉禾县| 莱阳市| 南开区| 蚌埠市| 确山县| 田林县| 芷江| 莱州市| 莒南县|