標籤:單向多對一 com nat conf 資料 _id 技術 import enc
簡訴 單向多對一、單向一對多、雙向一對多關聯性映射
一:單向多對一
1、學生表student和年級表Grade
2、類Student和類Grade
public class Student { private int id; private String name; private int age; private Grade grade; set/get....}
public class Grade { private int id; private String name; set/get....}
3、配置hbm.xml檔案
Student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="Student"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <property name="age"></property> <!-- 多對一 name 表示屬性名稱 class 指明 屬性對應的類 column指 資料庫表中的列名 --> <many-to-one name="grade" class="Grage" column="grade_id" foreign-key="fk_grade" not-null="true"></many-to-one> </class></hibernate-mapping>
Grade.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="Grade"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> </class></hibernate-mapping>
4、測試
1 package cn.test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 import cn.pojo.Grade; 8 import cn.pojo.Student; 9 import cn.pojo.User;10 11 public class TestHibernate {12 public static void main(String[] args) {13 //通過Configuration對象建立SessionFactory對象14 SessionFactory sf = new Configuration().configure().buildSessionFactory();15 //建立Session對象16 Session s = sf.openSession();17 //開啟事務18 s.beginTransaction();19 20 //我們只需要關注這裡的事務。21 Grade grade = new Grade();22 grade.setName("進階");23 s.save(grade);24 Student s1 = new Student();25 s1.setName("李小龍");26 s1.setAge(22);27 s1.setGrade(grade);28 s.save(s1);29 //提交事務30 s.getTransaction().commit();31 //關閉Session32 s.close();33 //關閉SessionFactory34 sf.close();35 }36 }
二:單向一對多
1、Grade類
1 public class Grade{2 private int id;3 private String name; 4 private Set<Student> students = new HashSet<Student>();5 6 set/get.... 7 }
2、Grade.hbm.xml設定檔
<hibernate-mapping package="cn.pojo"> <class name="Grade"> <!-- 主鍵建置原則 --> <id name="id" column="id"> <generator class="native"></generator> </id> <!-- 實體類的屬性 --> <property name="name"></property> <!-- set是 Grade中的集合屬性 name屬性名稱 --> <set name="students"> <!-- key表示外鍵 column外鍵列名--> <key column="grade_id" not-null="true"></key> <!-- one-to-many 一對多 類Grade 中 students 所表示類型 --> <one-to-many class="Student"/> </set> </class></hibernate-mapping>
三:雙向一對多映射,就是兩個hbm.xml都進行映射配置
Hibernate學習之路(四)