Hibernate學習之路(四)

來源:互聯網
上載者:User

標籤:單向多對一   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學習之路(四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.