Hibernate的配置與簡單使用

来源:http://www.cnblogs.com/xingyazhao/archive/2017/04/02/6659124.html
-Advertisement-
Play Games

一、概念 Hibernate是一個開源的對象關係映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以拋棄在程式中編寫SQL語句,隨心所欲的使用對象編程思維來操縱資料庫。 二、準備工作 在Eclipse中安裝HibernateTools插件:Help -> Install ...


一、概念

   Hibernate是一個開源的對象關係映射(ORM)框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以拋棄在程式中編寫SQL語句,隨心所欲的使用對象編程思維來操縱資料庫。

二、準備工作

  在Eclipse中安裝HibernateTools插件:Help -> Install New Software 來進行安裝。New -> Other打開的對話框中如果有Hibernate選項則表明安裝成功。

三、創建工程

  1.New 一個 Java Project

  2.為Java工程導入jar包:

    • Hibernate核心jar包
    • MySQL的jdbc驅動jar包
    • Junit4的jar包

     我們在windows->preferences->java->build path-user libraries中將三者添加為三個用戶類庫,方便以後的導入:

    右擊Java項目->properties->Java Build Path->Library->add Library->User Library->next->將剛纔建好的用戶類庫全打勾->finish->ok。

  3. 創建Hibernate的配置文檔,並編輯:

    右擊工程下的src->new->other->Hibernate->Hibernate Configuration File (cfg.xml)->next,next,finish

    src下已經生成了配置文件hibernate.cfg.xml,打開

<hibernate-configuration>
    <session-factory name="">
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  //mysql的jdbc驅動
        <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>  //指明資料庫的url地址
        <property name="connection.username">root</property>  //mysql用戶名
        <property name="connection.password">****</property>  //密碼
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  //方言

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">create</property>

        <mapping resource="Students.hbm.xml" />  //映射文件
    </session-factory>
</hibernate-configuration>

   4. 創建持久化類

    假如我們想往資料庫存放一張學生表,包括id,姓名,性別,生日,地址這些欄位。那麼我們可以創建一個Students類,類中包含了學生的這些屬性,我們可以通過“更改Students對象的屬性,再傳遞給資料庫”來間接地操縱資料庫,這樣就避免了使用SQL語句。那麼Students這個類我們就稱為持久化類。

    在src下創建一個類,命名為Students。持久化類的設計原則要遵循JavaBean的設計原則:

    • 公有的類
    • 私有的屬性
    • 無參的公有的構造方法
    • 屬性setter/getter封裝

    如下:

    
public class Students {

    private int sid;
    private String sname;
    private String gender;
    private Date brithday;
    private String address;

    public Students() {

    }

    public Students(int sid, String sname, String gender, Date brithday, String address) {
        this.sid = sid;
        this.sname = sname;
        this.gender = gender;
        this.brithday = brithday;
        this.address = address;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBrithday() {
        return brithday;
    }

    public void setBrithday(Date brithday) {
        this.brithday = brithday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday
                + ", address=" + address + "]";
    }

}
Students Class

  5. 創建對象-關係映射文件

    右擊src->new->other->Hibernate->Hibernater XML Mapping File (hbm.xml)->next,next->點選要持久化的類->finish

    對象-關係映射文件創建完畢,打開可以看到:文件將一個實體類映射稱為資料庫中的一張表。

    
<hibernate-mapping>
    <class name="Students" table="STUDENTS">
        <id name="sid" type="int">
            <column name="SID" />
            <generator class="assigned" />
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="brithday" type="java.util.Date">
            <column name="BRITHDAY" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
    </class>
</hibernate-mapping>
Students.hbm.xml

    映射文件創建好之後要記得在hibernate配置文件中,添加mapping標簽:

    <mapping resource="Students.hbm.xml" />

  6. 在Mysql中創建一個資料庫,名稱為配置文檔中所配置的資料庫名稱

  7. 通過Hibernate API編寫訪問資料庫的代碼,使用Junit進行測試。

    三個註解:

    • @Test :測試方法
    • @Before:初始化方法
    • @After:釋放資源

    右擊工程名->new->source folder源文件夾->folder name命名為test->finish

    在test文件夾下新建一個類,命名為StudentsTest:

 1 import java.util.Date;
 2 import org.hibernate.Session;
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.Transaction;
 5 import org.hibernate.cfg.Configuration;
 6 import org.hibernate.service.ServiceRegistry;
 7 import org.hibernate.service.ServiceRegistryBuilder;
 8 import org.junit.After;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 //測試類
13 public class StudentsTest {
14 
15     private SessionFactory sessionFactory;
16     private Session session;
17     private Transaction transaction;
18 
19     @Before
20     public void init() {
21         // 創建配置對象
22         Configuration config = new Configuration().configure();
23         // 創建服務註冊對象
24         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties())
25                 .buildServiceRegistry();
26         // 創建會話工廠對象
27         sessionFactory = config.buildSessionFactory(serviceRegistry);
28         // 會話對象
29         session = sessionFactory.openSession();
30         // 開啟事務
31         transaction = session.beginTransaction();
32 
33     }
34 
35     @After
36     public void destroy() {
37         transaction.commit();// 提交事務
38         session.close();// 關閉會話
39         sessionFactory.close();// 關閉會話工廠
40     }
41 
42     @Test
43     public void testSaveStudents() {
44         // 生成學生對象
45         Students s = new Students(1, "張三", "男", new Date(), "北京市");
46         // 保存對象進入資料庫
47         session.save(s);
48     }
49 }

    測試類創建好之後,右擊該類下目錄下的testSaveStudents()方法,Run as Junit Test!

    之後我們去相應的資料庫里查看,已經有一張students的表生成了:

    

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JSR330 DI JSR 330 ,提供了一種可重用的、可維護、可測試的方式來獲取Java對象。也稱為Dependency Injection 。 DI應該都不陌生,因為它就是Spring core之一。在Spring盛行後,Google也提供了一種DI實現:Guice。因為這兩個DI容器的盛行, ...
  • 一、單例模式(Singleton) 1、單例模式應用場景: ①Servlet ②任務管理器 ③鏈接池 ④Spring中每個 bean 預設是單例 ⑤網站計數器 2、單例要求 ①構造器私有 ②私有的靜態變數 ③公共的靜態的可以訪問私有的靜態變數的方法 結論:由結果可以得知單例模式為一個面向對象的應用程 ...
  • 我在mvc配置文件中加上下麵這個配置就好了 <mvc:annotation-driven></mvc:annotation-driven>,需要在開頭引用如下命名空間xmlns:mvc="http://www.springframework.org/schema/mvc 它自動配置DefaultAn ...
  • 聲明 轉載請註明出處! Reprint please indicate the source! http://www.hiknowledge.top/?p=86&preview=true 什麼是JMS JMS即Java消息服務(Java Message Service)應用程式介面,是一個Java平 ...
  • 在牛客網上做到的一道題,挺簡單基礎的,不過也寫一下,哈哈! 統計一個數字在排序數組中出現的次數: 可定義一個用於統計數字個數的變數count,然後從前往後遍曆數組,看是否與所求數字相等,如果相等,則count++; 下麵貼出代碼: public class Solution { public int ...
  • 這段時間在做項目,發現自己忘得好快呀,幸虧有博客園幫我記著呢,整理博客園簡直不要太重要了哦 因為做的是一個內部管理系統,只用了一個主頁面,所有的都不允許整個網頁刷新,所以我們只能用ajax 來做,當然剛開始做也走了很多的彎路,最終還是做出來了 這點還是比較欣慰的 今天要整理一下ajax實現修改功能 ...
  • 作為一個能安全運行的工具庫,為了保證占用資源的安全性,對異常處理(exception handling)和事後處理(final clean-up)的支持是不可或缺的。FunDA的數據流FDAPipeLine一般是通過讀取資料庫數據形成數據源開始的。為了保證每個數據源都能被安全的使用,FunDA提供了 ...
  • 一、什麼是編碼 編碼是指信息從一種形式或格式轉換為另一種形式或格式的過程。 在電腦中,編碼,簡而言之,就是將人能夠讀懂的信息(通常稱為明文)轉換為電腦能夠讀懂的信息。眾所周知,電腦能夠讀懂的是高低電平,也就是二進位位(0,1組合)。 而解碼,就是指將電腦的能夠讀懂的信息轉換為人能夠讀懂的信息 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...