1 対多、多対 1、 1 対 1、 多対多。
一般的に使用されるのは、1 対多と多対 1 です。
データベースでは、主キーと外部キーの関連付けを追加することで 1 対多の関係を表現できます。 Hibernate では、一方の側で複数のパーティのコレクションを保持することによって実装されます。 "one" の一方の端にあります
以下は、追加、削除、変更、検索の「1 対多」デモを実装しています。1 つのクラスが複数の生徒に対応します。
最初に学生クラスを作成します Student
1 package com.imooc.entity; 2 3 import java.io.Serializable; 4 5 public class Student implements Serializable { 6 7 private int sid; 8 private String sname; 9 private String sex;10 // 在多方定义一个一方的引用11 private Grade grade;12 13 public int getSid() {14 return sid;15 }16 public void setSid(int sid) {17 this.sid = sid;18 }19 public String getSname() {20 return sname;21 }22 public void setSname(String sname) {23 this.sname = sname;24 }25 public String getSex() {26 return sex;27 }28 public void setSex(String sex) {29 this.sex = sex;30 }31 public Grade getGrade() {32 return grade;33 }34 public void setGrade(Grade grade) {35 this.grade = grade;36 }37 38 public Student() {39 super();40 }41 42 public Student(String sname, String sex) {43 super();44 this.sname = sname;45 this.sex = sex;46 }47 48 }
クラスクラスを作成します Grade
1 package com.imooc.entity; 2 3 import java.io.Serializable; 4 import java.util.HashSet; 5 import java.util.Set; 6 7 8 public class Grade implements Serializable { 9 10 private int gid;11 private String gname;12 private String gdesc;13 private Set<Student> students = new HashSet<Student>();14 15 public int getGid() {16 return gid;17 }18 public void setGid(int gid) {19 this.gid = gid;20 }21 public String getGname() {22 return gname;23 }24 public void setGname(String gname) {25 this.gname = gname;26 }27 public String getGdesc() {28 return gdesc;29 }30 public void setGdesc(String gdesc) {31 this.gdesc = gdesc;32 }33 public Set<Student> getStudents() {34 return students;35 }36 public void setStudents(Set<Student> students) {37 this.students = students;38 }39 40 public Grade() {41 super();42 }43 44 public Grade(int gid, String gname, String gdesc) {45 super();46 this.gid = gid;47 this.gname = gname;48 this.gdesc = gdesc;49 }50 51 public Grade(String gname, String gdesc) {52 super();53 this.gname = gname;54 this.gdesc = gdesc;55 }56 }<span class="cnblogs_code_collapse">見るコード</span><p>学生クラスのマッピングファイルStudent.hbm.xmlを作成します。 <span style="max-width:90%"></span></p> <pre class="brush:php;toolbar:false"> 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final --> 5 <hibernate-mapping> 6 <class name="com.imooc.entity.Student" table="STUDENT"> 7 <id name="sid" type="int"> 8 <column name="SID" /> 9 <generator class="increment" />10 </id>11 <property name="sname" type="java.lang.String">12 <column name="SNAME" />13 </property>14 <property name="sex" type="java.lang.String">15 <column name="SEX" />16 </property>17 </class>18 </hibernate-mapping>
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2017-6-1 14:49:09 by Hibernate Tools 3.5.0.Final --> 5 <hibernate-mapping> 6 <class name="com.imooc.entity.Grade" table="GRADE"> 7 <id name="gid" type="int"> 8 <column name="GID" /> 9 <generator class="increment" />10 </id>11 <property name="gname" type="java.lang.String">12 <column name="GNAME" length="20" not-null="true" />13 </property>14 <property name="gdesc" type="java.lang.String">15 <column name="GDESC" />16 </property>17 <!-- 指定关联的外键列 -->18 <set name="students" table="STUDENT">19 <key>20 <column name="GID" />21 </key>22 <one-to-many class="com.imooc.entity.Student" />23 </set>24 </class>25 </hibernate-mapping>
りー
以上がhibernate_association マッピング_1 対多の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。