hibernate學習筆記(2)

yesye發表於2021-09-09

主要內容:
1.hibernate中 單向一對多關聯關係
題外話:
多對一和一對多,本質是一回事。不同的角度而已

一、在資料庫裡建表
1.建立student表,專案有,id,name,sex,gid。其中把id設為主鍵,但不設立自增長
2.建立grade表,專案有,gid,gname,gdesc。其中把gid設為主鍵,但不設立自增長
3.在多方,也就是student表裡,建立與grade表的gid的外來鍵關係

二、寫持久化類
新建grade.java和student.java兩個類
1.序列化
implements Serializable介面,獲取序列號
2.新增私有化的id、name等變數,並實現setget方法

三、給各持久化類生成對映檔案
用hibernate工具生成下面兩個對映檔案
Grade.hbm.xml
Student.hbm.xml

具體如下,注意配置:

Grade.hbm.xml

<!-- 在一方配置一對多關聯關係--&gt

Student.hbm.xml

四、配置hibernate.cfg.xml
這個檔案在第二步配置也可以。最重要的是配置上面建好的兩個對映檔案

<!-- 資料庫使用者名稱--&gtroot<!-- 資料庫密碼--&gtroot<!--mysql的驅動下載 --&gtcom.mysql.jdbc.Driver<!--指定資料庫名。我建立的是testmysql。後面指定了字元編碼,防止資料出現亂碼 --&gtjdbc:mysql:///one2many?userUnicode=true&characterEncoding=UTF-8<!-- 資料庫方言--&gtorg.hibernate.dialect.MySQLDialect<!-- 在控制檯顯示sql語句--&gttrue<!-- 指定自動更新資料表。也可以配置create:這是自動生成,會覆蓋原來資料--&gtupdate<!--
       true
        --&gt<!-- 配置對映檔案 --&gt

五、寫個測試類來驗證一下
寫測試類之前,因為session會經常被呼叫,為了以後呼叫方便,所以先寫個工具類。
HibernateUtil.java

public class HibernateUtil {
    private static SessionFactory sessionFactory;
    private static Session session;
    static{
        // 建立配置物件
        Configuration configure = new Configuration().configure();
        // 建立服務註冊物件
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configure.getProperties())
                .buildServiceRegistry();
        // 建立會話工廠
        sessionFactory = configure.buildSessionFactory(serviceRegistry);
    }
    public static Session getSession(){
        // 會話物件
        session = sessionFactory.openSession();
        return session; 
    }
    public static void closeSession(){
        if (session.isOpen() || session!=null) {
            session.close();
        }
    }
}

然後寫測試類
建立一個班級和兩個學生,看看能不能插入到資料庫中。結果OK
Test.java

public class Test {

    public static void main(String[] args) {
        Test t=new Test();
        t.add();

    }
    public void add(){
        Grade grade=new Grade("java一班","優秀班級");
        Student stu1=new Student("楊洋","男");
        Student stu2=new Student("李麗","女");
        grade.getStudent().add(stu1);
        grade.getStudent().add(stu2);

        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        session.save(grade);
        session.save(stu1);
        session.save(stu2);
        transaction.commit();
        HibernateUtil.closeSession();

    }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2799536/,如需轉載,請註明出處,否則將追究法律責任。

相關文章