Java: hibernate框架(1)

一、設置映射配置文件
<1> 導入約束:

<?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">

<2>配置字段

<hibernate-mapping>
/*
*  1.name屬性: 實體類的路徑
*  2.table屬性: 即將創建數據表的名稱
*/
    <class name="com.company.User" table="user">
        //配置實體類中定義的屬性
/*
*  1.name屬性:  實體類中聲明的屬性
*  2.column屬性: 數據表中字段(可以不寫.默認與name的值相同)
*/
        <id name="uid" column="uid">
            <!--設置數據表id增長策略-->
            <generator class="native"></generator>
        </id>
        <property name="username" column="username"></property>
        <property name="password" column="password"></property>
        <property name="address" column="address"></property>
    </class>
</hibernate-mapping>

二. 配置hibernate核心配置文件

<1>導入約束

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<2>設置配置信息

<hibernate-configuration>
    <session-factory>
        <!--配置數據庫信息-->
        <property name="hibernate.connection.driver_class ">com.mysql.jdbc.Driver</property> // 加載數據庫驅動
        <property name="hibernate.connection.url">jdbc:mysql:///hibernateDemo1</property>  // 設置數據庫地址
        <property name="hibernate.connection.username">root</property>  //設置數據庫賬戶
        <property name="hibernate.connection.password">root</property>   //設置數據庫密碼
        <!--配置hibernate信息-->
        <!--設置程序執行時在控制臺輸出底層sql語句-->
        <property name="hibernate.show_sql">true</property>
        <!--設置輸出底層sql語句格式化-->
        <property name="hibernate.format_sql">true</property>
        <!--設置hibernate自動更新表數據,沒有表就自動創建-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--配置數據庫方言-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--引入映射文件-->
        <mapping resource="com/company/User.hbm.xml"></mapping> 
    </session-factory>
</hibernate-configuration>

三. 創建實體類User

public class User {

    private  int did;
    private String username;
    private String password;
    private String address;

    public int getUid() {
        return did;
    }
    public void setUid(int uid) {
        this.uid = did;
    } 
   public String getUsername() {
        return username;
    } 
   public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password; 
   }
    public String getAddress() {
        return address;
    } 
   public void setAddress(String address) {
        this.address = address; 
   }
}

四. 實現代碼

//第一步: 加載hibernate核心文件
Configuration cfg = new Configuration();cfg.configure();

//第二步: 創建SessionFactory對象
/*
*   1.責初始化Hibernate  
*   2.數據存儲源的代理,負責創建Session對象
*   3.他是不是輕量級的
*   4.通常而言,每個項目創建一個SessionFactory對象就夠了
*/
SessionFactory sessionFactory = cfg.buildSessionFactory();

//第三步: 使用SessionFactory 創建session對象
Session session = sessionFactory.openSession();

//第四步: 開啟事務
/*
*  1. 事務是訪問并可能更新數據庫中各種數據項的一個程序執行單元
*  2.開啟事務是由session對象調用beginTransaction()方法,返回的是Transaction對象
*  3.事務關閉是由Transaction對象調用commit()方法[關閉]或者rollback()方法[回滾]
*/
Transaction tx = session.beginTransaction();

//第五步: 寫具體邏輯crud操作
//添加數據
User user = new User();
user.setUsername("xiaoHong");
user.setPassword("1314");
user.setAddress("Japan");
session.save(user);

//第六步: 提交事物
tx.commit();

//第七步: 關閉資源
session.close();
sessionFactory.close();

五. 抽取hibernate工具類

//將SeesionFactory的創建放在static代碼塊中,全程只執行一次,提高程序的執行效率
public class HibernateUtils {
    private static Configuration cfg = null;
    private static SessionFactory sessionFactory = null;
    //全程只調用一次,只創建一次SeesionFactory對象
    static {
        cfg = new Configuration();
        cfg.configure();
        sessionFactory = cfg.buildSessionFactory();
    }
    //獲取SessionFactory對象
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

六. 實現代碼(使用工具類)

      //第一步: 調用HibernateUtils工具類創建Configuration對象和SessionFactory對象
       SessionFactory sessionFactory = HibernateUtils.getSessionFactory();

        //第二步: 使用SessionFactory 創建session對象
        Session session = sessionFactory.openSession(); 

       //第三步: 開啟事務
        Transaction tx = session.beginTransaction();

        //第四步: 寫具體邏輯crud操作
        //添加數據
        User user = new User();
        user.setUsername("xiaoHong");
        user.setPassword("1314");
        user.setAddress("Japan");
        session.save(user); 

       //第五步: 提交事物
        tx.commit();

        //第六步: 關閉資源
        session.close();
        sessionFactory.close();

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容

  • 本文包括: 1、CRM 項目的整體介紹 2、Hibernate 框架概述 3、Hibernate 快速入門 4、H...
    廖少少閱讀 3,484評論 9 66
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,923評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,829評論 18 139
  • 一,永恒的矛盾 人類的基因當中深深植入了一種“本能”:盡可能的保存能量——多吃東西少做事,才是最安全的策略。換言之...
    牛爸愛學習閱讀 470評論 0 3