成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate實戰(zhàn)的詳細分析

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

對象關(guān)系映射(ObjectRelativeMapping)簡稱ORM,是面向?qū)ο箝_發(fā)的一個熱點,用來解決JDBC開發(fā)中手動進行OR映射的繁雜與不便。EJB中的實體Bean在這個領(lǐng)域是很著名的——既因為它的先進而著名,也因為它的低效而著名。有過實體Bean開發(fā)經(jīng)驗的人可能都會為實現(xiàn)遠程接口造成的效率低下而頭痛,在很多不大不小的項目中,使用實體Bean是否得不償失,爭論很大。一個輕量級的持久化方案也許能夠解決一些問題,Hibernate應(yīng)此而生。

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

首先需要配置環(huán)境,下載Hibernate(www.hibernate.org),把lib下的*.jar添加到classpath,你的數(shù)據(jù)庫JDBC驅(qū)動程序也應(yīng)該在classpath中。打開hibernate.properties,針對你使用的數(shù)據(jù)庫,配置相應(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)寫好的,只需要取掉注釋即可,我自己只是修改了數(shù)據(jù)庫名稱、帳號、密碼。建立一個名為zizz的數(shù)據(jù)庫備用。

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

我們談?wù)摿撕芏啻斡成洌贖ibernate實戰(zhàn)中應(yīng)該首先來看看這個映射是如何完成的。假設(shè)一個最簡單的應(yīng)用,寫一個功能最單一的留言板,設(shè)計的數(shù)據(jù)有留言的編號、留言者名稱、留言內(nèi)容,還有留言時間。足夠簡單吧,換做是你打算怎么干?我猜你要首先建立一個數(shù)據(jù)庫表格,名字也許叫做guestbook。No,這不是面向?qū)ο蟮姆绞剑环潦紫葟膶ο蟮慕嵌葋砜紤]。我們當然希望每一條留言都以對象的方式呈現(xiàn),每個對象應(yīng)該具有的屬性有:id、author、content、time。偷個懶,沒有畫UML。下面這個類應(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實戰(zhàn)中最簡單的Bean了,如果覺得困難的話,請你先回火星等我。

需要注意的是setId方法被指定為private,這是因為我希望用這個字段做主鍵,它最好由系統(tǒng)自動生成,所以不應(yīng)該由用戶來指定,這個方法專為Hibernate準備,所以是私有的。

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


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









雖然有點陌生,但是很易讀,仔細琢磨一下。

下面來編寫我們的應(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ù)庫里面看看,表格已經(jīng)建立好了,并且數(shù)據(jù)也已經(jīng)保存。如果把

newSchemaExport().create(true,true);

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

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

【編輯推薦】

  1. Hibernate查詢方法與緩存的關(guān)系
  2. Hibernate多表查詢結(jié)果處理
  3. Hibernate連接池配置實例
  4. Hibernate下載和安裝
  5. Hibernate中的Cache管理
責任編輯:張攀 來源: 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

2010-04-26 18:17:19

Oracle存儲過程

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ù)

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é)議頭格式

2010-01-06 16:12:52

分析Json stri

2009-09-07 14:18:01

C#內(nèi)存管理

2009-09-09 13:53:21

Linq表值函數(shù)

2009-10-28 10:06:29

VB.NET With
點贊
收藏

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

主站蜘蛛池模板: 国产成人久久精品 | 国产精品中文字幕在线 | 男人天堂99 | 久久国产精品视频 | 香蕉久久a毛片 | 午夜视频免费在线观看 | 国产亚洲一区二区在线观看 | a级在线免费观看 | 天天色综网 | 亚洲精品国产成人 | 国产精品久久777777 | 国产一区视频在线 | 久久免费视频在线 | 亚洲午夜精品 | 日韩视频专区 | av在线播放网 | 麻豆一区一区三区四区 | 免费黄色a级毛片 | 日韩色在线 | 欧美精品一区二区三区四区 在线 | 久久久久久精 | 亚洲一区二区三区在线免费 | 一区二区在线免费播放 | 超级碰在线| 狠狠久久| 久久久久久国产精品 | www亚洲精品 | 狠狠操狠狠干 | 国产色| 嫩草网 | 国产精品久久久久久久久久三级 | 国产成人精品免费 | 亚洲黄色一区二区三区 | 丁香五月缴情综合网 | 国产精品国产三级国产aⅴ中文 | 国产成人精品一区二三区在线观看 | 日韩高清电影 | 99精品国产一区二区三区 | 色偷偷噜噜噜亚洲男人 | 成人av网站在线观看 | 成人免费视频 |