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

一帐我、Hibernate概述

(一)什么是Hibernate槽卫?

hibernate核心內(nèi)容是ORM(關(guān)系對象模型)〔聊遥可以將對象自動的生成數(shù)據(jù)庫中的信息,使得開發(fā)更加的面向?qū)ο笞彀臁_@樣作為程序員就可以使用面向?qū)ο蟮乃枷雭聿僮?a target="_blank" rel="nofollow">數(shù)據(jù)庫瞬场,而不用關(guān)心繁瑣的JDBC。所以涧郊,hibernate處于三層架構(gòu)中的D層(持久層)贯被。

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

1、Hibernate可以使用在Java的任何項目中妆艘,不一定非要使用在Javaweb項目中彤灶。因為Hibernate不需要類似于tomact這些容器的支持,可以直接通過一個main方法進(jìn)行測試批旺。

2枢希、通過下面的實例,可以發(fā)現(xiàn)使用Hibernate可以大大減少代碼量朱沃。

3苞轿、由于使用了Hibernate茅诱,代碼中不涉及具體的JDBC語句,所以就方便了代碼的可移植性搬卒。

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

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

(二)加入數(shù)據(jù)庫驅(qū)動摆寄。下面的例子中主要是采用Mysql數(shù)據(jù)庫來演示的,所以在這里引入MysqL的JDBC驅(qū)動(點(diǎn)擊下載)坯门。

(三)提供核心配置文件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第一個實例

該實例的目錄結(jié)構(gòu)如下

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

1古戴、新建一個普通的java項目欠橘,按照上面的步驟引入相關(guān)的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標(biāo)簽是將要生成是數(shù)據(jù)庫表中的字段,在這里不用關(guān)心各個字段是什么類型的叉袍。因為Hibernate會根據(jù)上面的實體類中屬性的類型來決定將來表中字段的類型

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)?{

//默認(rèn)讀取hibernate.cfg.xml文件

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

SchemaExport?export?=newSchemaExport(cfr);

export.create(true,true);

}

}

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

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

[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();

//開啟事務(wù)

session.beginTransaction();

User?user?=newUser();

user.setUsername("用戶名");

user.setPassword("123");

user.setCreateTime(newDate());

user.setExpireTime(newDate());

session.save(user);

//提交事務(wù)

session.getTransaction().commit();

}catch(Exception?e){

e.printStackTrace();

//回滾事務(wù)

session.getTransaction().rollback();

}finally{

if(session?!=null){

if(session.isOpen()){

//關(guān)閉session

session.close();

}

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

(四)總結(jié)

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

在代碼中有許多Hibernate的核心對象麦轰,例如Configuration、SessionFactory砖织、Session等等款侵。這些內(nèi)容將在以后介紹.

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侧纯,一起剝皮案震驚了整個濱河市新锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眶熬,老刑警劉巖妹笆,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件块请,死亡現(xiàn)場離奇詭異,居然都是意外死亡拳缠,警方通過查閱死者的電腦和手機(jī)墩新,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窟坐,“玉大人海渊,你說我怎么就攤上這事≌茉В” “怎么了臣疑?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徙菠。 經(jīng)常有香客問我讯沈,道長,這世上最難降的妖魔是什么懒豹? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任芙盘,我火速辦了婚禮驯用,結(jié)果婚禮上脸秽,老公的妹妹穿的比我還像新娘。我一直安慰自己蝴乔,他們只是感情好记餐,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著薇正,像睡著了一般片酝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挖腰,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天雕沿,我揣著相機(jī)與錄音,去河邊找鬼猴仑。 笑死审轮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辽俗。 我是一名探鬼主播疾渣,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崖飘!你這毒婦竟也來了榴捡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤朱浴,失蹤者是張志新(化名)和其女友劉穎吊圾,沒想到半個月后达椰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡街夭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年砰碴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片板丽。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡呈枉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出埃碱,到底是詐尸還是另有隱情猖辫,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布砚殿,位于F島的核電站啃憎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏似炎。R本人自食惡果不足惜辛萍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羡藐。 院中可真熱鬧贩毕,春花似錦、人聲如沸仆嗦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘩扼。三九已至谆甜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間集绰,已是汗流浹背规辱。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栽燕,地道東北人罕袋。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像纫谅,于是被迫代替她去往敵國和親炫贤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一付秕、Hibernate概述 (一)什么是Hibernate兰珍? hibernate核心內(nèi)容是ORM(關(guān)系對象模型)。...
    ITsupuerlady閱讀 287評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法询吴,類相關(guān)的語法掠河,內(nèi)部類的語法亮元,繼承相關(guān)的語法,異常的語法唠摹,線程的語...
    子非魚_t_閱讀 31,665評論 18 399
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,979評論 0 27
  • 一直被時間管理困擾的我爆捞,總感覺無法掌握自己的生活,終于在各種學(xué)習(xí)和嘗試中摸索到了適合自己的方式勾拉,并且在堅持了半個月...
    方方521閱讀 217評論 0 0
  • 我是一個簡單粗暴的人藕赞,分析問題也好成肘,談判也好,達(dá)成事務(wù)也罷斧蜕,通常喜歡直指目的双霍、瞄準(zhǔn)結(jié)果。 企業(yè)家做股權(quán)激勵批销,不是為...
    股權(quán)石榴社閱讀 488評論 0 1