新手上路之Hibernate:第一個Hibernate例子

一、Hibernate概述

(一)什么是Hibernate通殃?

hibernate核心內容是ORM(關系對象模型)度液。可以將對象自動的生成數(shù)據庫中的信息画舌,使得開發(fā)更加的面向對象堕担。這樣作為程序員就可以使用面向對象的思想來操作數(shù)據庫,而不用關心繁瑣的JDBC曲聂。所以霹购,hibernate處于三層架構中的D層(持久層)。

(二)使用Hibernate的優(yōu)點

1朋腋、Hibernate可以使用在Java的任何項目中齐疙,不一定非要使用在Javaweb項目中膜楷。因為Hibernate不需要類似于tomact這些容器的支持,可以直接通過一個main方法進行測試贞奋。

2赌厅、通過下面的實例,可以發(fā)現(xiàn)使用Hibernate可以大大減少代碼量轿塔。

3特愿、由于使用了Hibernate,代碼中不涉及具體的JDBC語句勾缭,所以就方便了代碼的可移植性揍障。

二、Hibernate開發(fā)的環(huán)境搭建

(一)Hibernate的環(huán)境搭建非常簡單俩由,只需要引入Hibernate核心包(單擊下載)以及Hibernate依賴包(單擊下載)即可毒嫡。

(二)加入數(shù)據庫驅動。下面的例子中主要是采用Mysql數(shù)據庫來演示的采驻,所以在這里引入MysqL的JDBC驅動(點擊下載)审胚。

(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夾下即可)。其中的配置如下(針對mysql)

[html]view plaincopy

"-//Hibernate/Hibernate?Configuration?DTD?3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


com.mysql.jdbc.Driver


jdbc:mysql://localhost:3306/hibernate_first


root


root


org.hibernate.dialect.MySQLDialect

三礼旅、HIbernate第一個實例

該實例的目錄結構如下

說明:最后一個HIBERNATE3里面包含了所有的需要引用的jar包

1膳叨、新建一個普通的java項目,按照上面的步驟引入相關的jar包和配置文件

2痘系、建立User實體類

[java]view plaincopy

importjava.util.Date;

publicclassUser?{

privateString?id;

privateString?username;

privateString?password;

privateDate?createTime;

privateDate?expireTime;

publicString?getId()?{

returnid;

}

publicvoidsetId(String?id)?{

this.id?=?id;

}

publicString?getUsername()?{

returnusername;

}

publicvoidsetUsername(String?userName)?{

this.username?=?userName;

}

publicString?getPassword()?{

returnpassword;

}

publicvoidsetPassword(String?password)?{

this.password?=?password;

}

publicDate?getCreateTime()?{

returncreateTime;

}

publicvoidsetCreateTime(Date?createTime)?{

this.createTime?=?createTime;

}

publicDate?getExpireTime()?{

returnexpireTime;

}

publicvoidsetExpireTime(Date?expireTime)?{

this.expireTime?=?expireTime;

}

}

2菲嘴、提供User.hbm.xml文件,完成實體類的映射

[html]view plaincopy


"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

其中的property標簽是將要生成是數(shù)據庫表中的字段汰翠,在這里不用關心各個字段是什么類型的龄坪。因為Hibernate會根據上面的實體類中屬性的類型來決定將來表中字段的類型

3、配置hibernate.cfg.xml文件

[html]view plaincopy


com.mysql.jdbc.Driver


jdbc:mysql://localhost:3306/hibernate_first


root


root


org.hibernate.dialect.MySQLDialect

注意:必須是“/”而不能是“.”复唤。

4健田、生成表:編寫工具類ExoprtDB.java,將hbm生成ddl

[java]view plaincopy

importorg.hibernate.cfg.Configuration;

importorg.hibernate.tool.hbm2ddl.SchemaExport;

/**

*?將hbm生成ddl

*?@author?BCH

*

*/

publicclassExoprtDB?{

publicstaticvoidmain(String[]?args)?{

//默認讀取hibernate.cfg.xml文件

Configuration?cfr?=newConfiguration().configure();

SchemaExport?export?=newSchemaExport(cfr);

export.create(true,true);

}

}

到這里就可以生成User表了,但是如果直接運行ExoprtDB.java文件是不能生成User表的佛纫。因為在mysql數(shù)據中還沒有建立數(shù)據庫Hibernate-first妓局。所以在mysql控制臺中通過create database hibernate-first; use hibernate-first;之后再執(zhí)行ExoprtDB.java文件就可以生成表了。

5呈宇、向表中添加數(shù)據

[java]view plaincopy

importjava.util.Date;

importorg.hibernate.Session;

importorg.hibernate.SessionFactory;

importorg.hibernate.cfg.Configuration;

publicclassClient?{

publicstaticvoidmain(String[]?args)?{

//讀取配置文件

Configuration?cfg?=newConfiguration().configure();

SessionFactory?factory?=?cfg.buildSessionFactory();

Session?session?=null;

try{

session?=?factory.openSession();

//開啟事務

session.beginTransaction();

User?user?=newUser();

user.setUsername("用戶名");

user.setPassword("123");

user.setCreateTime(newDate());

user.setExpireTime(newDate());

session.save(user);

//提交事務

session.getTransaction().commit();

}catch(Exception?e){

e.printStackTrace();

//回滾事務

session.getTransaction().rollback();

}finally{

if(session?!=null){

if(session.isOpen()){

//關閉session

session.close();

}

執(zhí)行該java文件就可以完成向表中增加數(shù)據了,效果如下

(四)總結

通過上面的代碼我們可以看出好爬,在代碼中沒有涉及到任何有關JDBC的代碼,作為開發(fā)人員只需要寫好相應的實體類甥啄,然后通過配置就可以實現(xiàn)了表的建立以及向表中實現(xiàn)數(shù)據的插入存炮。

在代碼中有許多Hibernate的核心對象,例如Configuration、SessionFactory穆桂、Session等等宫盔。這些內容將在以后介紹.

更多詳細源碼參考來源:http://minglisoft.cn/technology歡迎大家一起學習研究相關技術,源碼獲取請加求求(企鵝):2042849237

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末享完,一起剝皮案震驚了整個濱河市飘言,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驼侠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆吴,死亡現(xiàn)場離奇詭異倒源,居然都是意外死亡,警方通過查閱死者的電腦和手機句狼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門笋熬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腻菇,你說我怎么就攤上這事胳螟。” “怎么了筹吐?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵糖耸,是天一觀的道長。 經常有香客問我丘薛,道長嘉竟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任洋侨,我火速辦了婚禮舍扰,結果婚禮上,老公的妹妹穿的比我還像新娘希坚。我一直安慰自己边苹,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布裁僧。 她就那樣靜靜地躺著个束,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锅知。 梳的紋絲不亂的頭發(fā)上播急,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音售睹,去河邊找鬼桩警。 笑死,一個胖子當著我的面吹牛昌妹,可吹牛的內容都是我干的捶枢。 我是一名探鬼主播握截,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烂叔!你這毒婦竟也來了谨胞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蒜鸡,失蹤者是張志新(化名)和其女友劉穎胯努,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逢防,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡叶沛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忘朝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灰署。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖局嘁,靈堂內的尸體忽然破棺而出溉箕,到底是詐尸還是另有隱情,我是刑警寧澤悦昵,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布肴茄,位于F島的核電站,受9級特大地震影響但指,放射性物質發(fā)生泄漏独郎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一枚赡、第九天 我趴在偏房一處隱蔽的房頂上張望氓癌。 院中可真熱鬧,春花似錦贫橙、人聲如沸贪婉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疲迂。三九已至,卻和暖如春莫湘,著一層夾襖步出監(jiān)牢的瞬間尤蒿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工幅垮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腰池,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像示弓,于是被迫代替她去往敵國和親讳侨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容

  • 一奏属、Hibernate概述 (一)什么是Hibernate跨跨? hibernate核心內容是ORM(關系對象模型)。...
    ITsupuerlady閱讀 602評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法囱皿,類相關的語法勇婴,內部類的語法,繼承相關的語法嘱腥,異常的語法咆耿,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據特定的OID,把一個對象從數(shù)據庫加載到內存中OID...
    JHMichael閱讀 1,967評論 0 27
  • 可能最近瘦的太快了,好多人問我怎么瘦的爹橱,就不一一作答啦,分享一下吧窄做,以后在問紅包先來愧驱。其實分享是個好東西,不只總結...
    接近鬼的哭泣閱讀 660評論 0 0
  • 詩/靈書 長安月下紅袖香 唐時紅袖亦芬芳椭盏,豈獨謫仙羈狂放组砚。 絕代風華千秋寫,淡妝濃抹粉詩香掏颊。 武則天 一舞劍器動四...
    逸云凝香閱讀 444評論 2 6