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
          而無法為  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 宣汉县| 兴义市| 长乐市| 汉沽区| 友谊县| 仙桃市| 兴隆县| 齐河县| 德保县| 广东省| 开江县| 兴文县| 格尔木市| 沙雅县| 都兰县| 雅安市| 义马市| 上思县| 兰考县| 南陵县| 循化| 富蕴县| 昆明市| 嘉兴市| 乌恰县| 乐平市| 英吉沙县| 桂平市| 龙胜| 昆山市| 金堂县| 彰化县| 滕州市| 余庆县| 博湖县| 永宁县| 汽车| 阿勒泰市| 长治县| 木里| 吕梁市|