Hibernate—— 創建與配置

第1章 Hibernate初識

1-2 什么是ORM?

· ORM(Object/Relationship Mapping):對象/關系映射

——利用面向對象思想編寫的數據庫應用程序最終都是把對象信息保存在關系型數據庫中,于是要編寫很多和底層數據庫相關的SQL語句

Hibernate就是一種可行的ORM框架技術


1-3 Hibernate簡介

1-4 ?Hibernate開發前準備

Hibernate Tools for Eclipse plugins

插件下載路徑:

http://sourceforge.net/projects/jboss/files/JBossTools/JBossTools4.1.x/hibernatetools-Update-4.1.2.Final_2014-03-18_15-46-19-B706.zip/download

配置方法:help—>Install New SoftWare——>點擊Add——>選擇路徑 ?

? ? 然后點擊安裝,需要重啟。檢查是否安裝成功(空白處右鍵 new——>other 看看有沒有Hibernate)


重點


1-5 編寫第一個Hibernate例子

第一步:創建Hibernate的配置文件 (hibernate.cfg.xml)

第二步:創建持久化類

第三步:創建對象——關系映射文件

第四步:通過Hibernate API編寫訪問數據庫的代碼

使用的版本:Hibernate 4.2.4 +Mysql6.0


具體的實現步驟:

第一步:創建一個工程

第二步:導入Hibernate必須的jar包

? ? ? ? ? ?下載地址:http://img.mukewang.com/down/558ca82d0001766100000000.rar

第三步:導入Mysql的jdbc驅動(mysql-connector-java-5.1.11-bin.jar)

第四步:導入Junit4的jar包 (junit-4.10.jar)

導入包步驟1
導入包步驟2

具體按照1-5 實現配置的具體步驟:

這里講的是Eclipse,如果是MyEclipse;具體方法參照:

http://jingyan.baidu.com/article/456c463b99f4370a583144a8.html


第一步 hibernate配置文檔

注意:如果使用Eclipse生成的配置文檔沒有智能提示時,需要自己導入dtd文檔的支持

尋找dtd文檔的路徑
hibernate.cfg.xml
配置hibernate.cfg.xml

第二步 創建持久化類 (跟JavaBean的寫法一樣)

Student.java

第三步 創建對象-關系映射文件和數據庫

操作步驟
映射文件 Student.hbm.xml
添加到 hibernate.cfg.xml
創建數據庫

補充一步:JUnit 進行單元測試

注解:@Before:是一個初始化方法

? ? ? ? ? @Test:是一個測試方法

? ? ? ? ? ?@After:釋放資源

JUnit 測試

第四步:通過Hibernate API編寫訪問數據庫的代碼

接著補充那步寫

測試類 ?StudentTest.java

右鍵運行(JUnit Test)

數據庫 hibernate



詳細講解 上面出現的一些配置文檔或者.....

講解——hibernate常用配置

常用配置

使用的時候,hibernate前綴可以去掉。如 hibernate.dialect === dialect

default_schema:在執行sql語句的時候,對所有的表名前面加上 這個數據庫的前綴(數據庫名. ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表名)

hbm2ddl.auto介紹:

? ? ? ?create:表示每次生成新的表結構(如果原來的表存在,會先刪除原來的表,再創建新 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表,并且添加記錄)

? ? ? ?update:在原來表的基礎上面進行更新(原來的測試數據會保留)

? ? ? create-drop:先創建再刪除

? ? ? validate:對原來的表結構進行驗證(如果現在的表結構與原來的不相同,就不會創建表結 ? ? ? ? ? ? ? ? ? ? ? ?構)


講解——session簡介

1.不建議直接使用jdbc的connection操作數據庫,而是通過使用session操作數據庫

2.session可以理解為 操作數據庫的 ?對象

3.session與connetion,是多對一關系,每一個session都有一個與之對應的connection,一個connection不同時刻可以供多個session使用。

4.要想把對象保存在關系數據庫中需要調用session的各種方法。

如:save(), update(), delete(), createQuery()等


講解——session詳解

一、如何獲取session對象?

1. openSession()

2. getCurrentSession()

使用 getCurrentSession()
Session 測試用例

二、openSession 與 getCurrentSession 的區別

1.getCurrentSession 在事務提交或者回滾之后會自動關閉,而openSession需要你手動關閉。如果使用openSession而沒有手動關閉,多次之后會導致連接池溢出。

2.openSession每次創建新的session對象,getCurrentSession使用現有的session對象

2. ?testOpenSession()方法里面改
2. ?testGetCurrentSession()方法里面改

體現第一點區別:

testSaveStudentWithGetCurrentSession()
testSaveStudentWithOpenSession()

講解—— hbm配置文檔

hibernate-mapping 標簽


class 標簽
id 標簽
生成策略

講解—— transaction簡介

· hibernate對數據庫的操作都是封裝在事務當中,并且默認是非自動提交的方式。所以用session保存對象時,如果不開啟事務,并且手工提交事務,對象并不會真正保存在數據庫中。

· 如果你想讓hibernate像jdbc那樣自動提交事務,必須調用session對象的doWork()方法,獲得jdbc的connection后,設置其為自動提交事務模式(注意:通常并不推薦這樣做)

注意:不開啟事務就不能將對象保存到數據庫中!

如果不使用事務!改相應的代碼

不使用事務的情況下

補充,Hibernate 操作數據庫的 增刪改查

插入/查詢 效果
修改數據效果
刪除數據效果

E:\student\java\java框架學習\Hibernate\Hibernate_demo1


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

推薦閱讀更多精彩內容

  • 本文包括: 1、CRM 項目的整體介紹 2、Hibernate 框架概述 3、Hibernate 快速入門 4、H...
    廖少少閱讀 3,481評論 9 66
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據特定的OID,把一個對象從數據庫加載到內存中OID...
    JHMichael閱讀 1,989評論 0 27
  • 本文中我們介紹并比較兩種最流行的開源持久框架:iBATIS和Hibernate,我們還會討論到Java Persi...
    大同若魚閱讀 4,327評論 4 27
  • 本文包括:1、Hibernate的持久化類2、Hibernate 持久化對象的三個狀態(難點)3、Hibernat...
    廖少少閱讀 1,470評論 0 13
  • 1、有什么比生命更重要。昨天晚上在看《解憂雜貨鋪》,看到《深夜的口琴聲》,還是蠻感慨的。那首《重生》雖然后來成了名...
    一顆花菜閱讀 251評論 0 0