偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Hibernate實(shí)戰(zhàn)的詳細(xì)分析

開(kāi)發(fā) 后端
本文從配置環(huán)境入手,對(duì)Hibernate實(shí)戰(zhàn)的詳細(xì)分析,見(jiàn)證Hibnate的復(fù)雜強(qiáng)大,可以讓你應(yīng)付復(fù)雜的應(yīng)用

對(duì)象關(guān)系映射(ObjectRelativeMapping)簡(jiǎn)稱ORM,是面向?qū)ο箝_(kāi)發(fā)的一個(gè)熱點(diǎn),用來(lái)解決JDBC開(kāi)發(fā)中手動(dòng)進(jìn)行OR映射的繁雜與不便。EJB中的實(shí)體Bean在這個(gè)領(lǐng)域是很著名的——既因?yàn)樗南冗M(jìn)而著名,也因?yàn)樗牡托ФS羞^(guò)實(shí)體Bean開(kāi)發(fā)經(jīng)驗(yàn)的人可能都會(huì)為實(shí)現(xiàn)遠(yuǎn)程接口造成的效率低下而頭痛,在很多不大不小的項(xiàng)目中,使用實(shí)體Bean是否得不償失,爭(zhēng)論很大。一個(gè)輕量級(jí)的持久化方案也許能夠解決一些問(wèn)題,Hibernate應(yīng)此而生。

Hibernate是一個(gè)中間層,它的目的是把數(shù)據(jù)庫(kù)中的關(guān)系通過(guò)一定的規(guī)則映射成為對(duì)象,讓Java開(kāi)發(fā)人員不用太多的考慮底層數(shù)據(jù)庫(kù)的問(wèn)題,只需要像通常情況下管理對(duì)象一樣的管理數(shù)據(jù)。在關(guān)系數(shù)據(jù)庫(kù)仍將持續(xù)占據(jù)市場(chǎng)的情況下,它很可觀。在數(shù)據(jù)持久化領(lǐng)域,即便是輕量級(jí)的方案也會(huì)是復(fù)雜饒舌的,也許如同周杰倫的音樂(lè)一樣不知所云。在學(xué)習(xí)它之前,最好先回想一下以前進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)中遇到的問(wèn)題和不便,想想為什么需要一個(gè)持久化層,才能知道很多操作的目的是什么,以及為什么要這么干,在這個(gè)問(wèn)題上我不想做更多的敘述,因?yàn)椤伴L(zhǎng)久以來(lái)……”這樣的句式通常long(不好意思,打不出來(lái))長(zhǎng),會(huì)對(duì)我的鍵盤(pán)和熱情造成很大的磨損。如果讓我寫(xiě)一本書(shū),那么我會(huì)樂(lè)意去敘述什么是數(shù)據(jù)持久化,它有什么好處等等。廢話少說(shuō),來(lái)了。

首先需要配置環(huán)境,下載Hibernate(www.hibernate.org),把lib下的*.jar添加到classpath,你的數(shù)據(jù)庫(kù)JDBC驅(qū)動(dòng)程序也應(yīng)該在classpath中。打開(kāi)hibernate.properties,針對(duì)你使用的數(shù)據(jù)庫(kù),配置相應(yīng)的信息,比如我使用的是MSSQLServer,配置如下:

##MSSQLServer
hibernate.dialectnet.sf.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_classcom.microsoft.jdbc.sqlserver.SQLServerDriver
hibernate.connection.urljdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zizz
hibernate.connection.usernamesa
hibernate.connection.password

其中很大部分是已經(jīng)寫(xiě)好的,只需要取掉注釋即可,我自己只是修改了數(shù)據(jù)庫(kù)名稱、帳號(hào)、密碼。建立一個(gè)名為zizz的數(shù)據(jù)庫(kù)備用。

然后把這個(gè)文件拷貝到你的應(yīng)用的根目錄下。

我們談?wù)摿撕芏啻斡成?,在Hibernate實(shí)戰(zhàn)中應(yīng)該首先來(lái)看看這個(gè)映射是如何完成的。假設(shè)一個(gè)最簡(jiǎn)單的應(yīng)用,寫(xiě)一個(gè)功能最單一的留言板,設(shè)計(jì)的數(shù)據(jù)有留言的編號(hào)、留言者名稱、留言內(nèi)容,還有留言時(shí)間。足夠簡(jiǎn)單吧,換做是你打算怎么干?我猜你要首先建立一個(gè)數(shù)據(jù)庫(kù)表格,名字也許叫做guestbook。No,這不是面向?qū)ο蟮姆绞?,不妨首先從?duì)象的角度來(lái)考慮。我們當(dāng)然希望每一條留言都以對(duì)象的方式呈現(xiàn),每個(gè)對(duì)象應(yīng)該具有的屬性有:id、author、content、time。偷個(gè)懶,沒(méi)有畫(huà)UML。下面這個(gè)類應(yīng)該是很容易理解的:

//GuestBook.java
packageorg.bromon.zizz;
importjava.util.*;
publicclassGuestBook
{
privateintid;
privateStringauthor;
privateStringcontent;
privateCalendartime;
privatevoidsetId(intid)
{
this.id=id;
}
publicintgetId()
{
return(id);
}
publicvoidsetAuthor(Stringauthor)
{
this.author=author;
}
publicStringgetAuthro()
{
return(author);
}
publicvoidsetContent(Stringcontent)
{
this.content=content;
}
publicStringgetContent()
{
return(content);
}
publicvoidsetTime(Calendartime)
{
this.time=time;
}
publicCalendargetTime()
{
return(time);
}
}

基本上是Hibernate實(shí)戰(zhàn)中最簡(jiǎn)單的Bean了,如果覺(jué)得困難的話,請(qǐng)你先回火星等我。

需要注意的是setId方法被指定為private,這是因?yàn)槲蚁M眠@個(gè)字段做主鍵,它最好由系統(tǒng)自動(dòng)生成,所以不應(yīng)該由用戶來(lái)指定,這個(gè)方法專為Hibernate準(zhǔn)備,所以是私有的。

如何把這個(gè)類與數(shù)據(jù)庫(kù)映射起來(lái)?看看Hibernate的魔法,使用一個(gè)XML文件來(lái)描述,它應(yīng)該被命名為GuestBook.hbm.xml:


"-//Hibernate/HibernateMappingDTD2.0//EN"
"'target=_blank>http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">









雖然有點(diǎn)陌生,但是很易讀,仔細(xì)琢磨一下。

下面來(lái)編寫(xiě)我們的應(yīng)用,它的功能是插入數(shù)據(jù):

//Operate.java
packageorg.bromon.zizz;
importnet.sf.hibernate.*;
importnet.sf.hibernate.cfg.*;
importnet.sf.hibernate.tool.hbm2ddl.*;
importjava.util.*;
publicclassOperate
{
publicstaticvoidmain(Stringargs[])
{
try
{
Configurationcfg=newConfiguration().addClass(GuestBook.class);
SessionFactorysessions=cfg.buildSessionFactory();
newSchemaExport(cfg).create(true,true);
Sessionsession=sessions.openSession();
GuestBookgb=newGuestBook();
gb.setAuthor(“Bromon”);
gb.setContent(“留言的內(nèi)容”);
gb.setTime(Calendar.getInstance());
Transactionts=session.beginTransaction();
session.save(gb);
ts.commit();
session.close();
}catch(Exceptione)
{
System.out.println(e);
}
}
}
編譯吧:javac–d.*.java
執(zhí)行一下:javaorg.bromon.zizz.Operate

到數(shù)據(jù)庫(kù)里面看看,表格已經(jīng)建立好了,并且數(shù)據(jù)也已經(jīng)保存。如果把

newSchemaExport().create(true,true);

注釋掉,那么系統(tǒng)不會(huì)創(chuàng)建表格,而只是在已有的表格中添加新的記錄,當(dāng)然,如果表格不存在的話,會(huì)產(chǎn)生異常。

你已經(jīng)看到了Hibernate實(shí)戰(zhàn)神奇魔法的5%,它足夠的復(fù)雜強(qiáng)大,可以讓你應(yīng)付復(fù)雜的應(yīng)用,不過(guò)今天還是到此為止吧。

【編輯推薦】

  1. Hibernate查詢方法與緩存的關(guān)系
  2. Hibernate多表查詢結(jié)果處理
  3. Hibernate連接池配置實(shí)例
  4. Hibernate下載和安裝
  5. Hibernate中的Cache管理
責(zé)任編輯:張攀 來(lái)源: CSDN博客
相關(guān)推薦

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基礎(chǔ)

2009-12-03 17:41:40

PHP應(yīng)用發(fā)展

2021-10-25 19:52:52

IntentFilte

2009-09-14 13:50:35

LINQ編程模型

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew

2009-11-20 13:11:44

Oracle XML數(shù)

2010-04-26 18:17:19

Oracle存儲(chǔ)過(guò)程

2009-09-09 09:48:43

Linq延遲加載

2009-09-14 16:21:34

LINQ To XML

2009-10-10 13:52:57

VB Update方法

2010-03-08 17:18:46

Linux du命令

2010-04-12 10:53:07

Oracle SQL

2010-04-26 14:32:21

Oracle SQL

2010-07-02 11:19:31

IP協(xié)議頭格式

2009-09-07 14:18:01

C#內(nèi)存管理

2009-09-09 13:53:21

Linq表值函數(shù)

2009-03-24 09:17:58

驅(qū)動(dòng)GSMAndroid

2009-10-28 10:06:29

VB.NET With
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)