久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長(zhǎng)百科 | 數(shù)字化技能提升教程 數(shù)字化時(shí)代生存寶典
首頁(yè)
數(shù)字化百科
電子書
建站程序
開(kāi)發(fā)
服務(wù)器
辦公軟件
開(kāi)發(fā)教程
服務(wù)器教程
軟件使用教程
運(yùn)營(yíng)教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導(dǎo)航
程序頻道
推廣頻道
網(wǎng)賺頻道
人物頻道
網(wǎng)站程序
網(wǎng)頁(yè)制作
云計(jì)算
服務(wù)器
CMS
論壇
網(wǎng)店
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航
WIKI使用導(dǎo)航
WIKI首頁(yè)
最新資訊
網(wǎng)站程序
站長(zhǎng)人物
頁(yè)面分類
使用幫助
編輯測(cè)試
創(chuàng)建條目
網(wǎng)站地圖
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)百科
主機(jī)偵探
IDCtalk云說(shuō)
跨境電商導(dǎo)航
WordPress啦
站長(zhǎng)專題
網(wǎng)站推廣
網(wǎng)站程序
網(wǎng)站賺錢
虛擬主機(jī)
cPanel
網(wǎng)址導(dǎo)航專題
云計(jì)算
微博營(yíng)銷
虛擬主機(jī)管理系統(tǒng)
開(kāi)放平臺(tái)
WIKI程序與應(yīng)用
美國(guó)十大主機(jī)
編輯“
Hibernate
”
人物百科
|
營(yíng)銷百科
|
網(wǎng)賺百科
|
站長(zhǎng)工具
|
網(wǎng)站程序
|
域名主機(jī)
|
互聯(lián)網(wǎng)公司
|
分類索引
跳轉(zhuǎn)至:
導(dǎo)航
、?
搜索
警告:
您沒(méi)有登錄。如果您做出任意編輯,您的IP地址將會(huì)公開(kāi)可見(jiàn)。如果您
登錄
或
創(chuàng)建
一個(gè)賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個(gè)!
[[Image:Hibernate.jpg|right]] '''Hibernate'''是一種[[Java]]語(yǔ)言下的對(duì)象關(guān)系映射解決方案。 它是使用[[GNU]]寬通用公共許可證發(fā)行的自由、[[開(kāi)源]]的[[軟件]]。它為[[面向?qū)ο骫]的領(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的映射,提供了一個(gè)使用方便的[[框架]]。 Hibernate對(duì)[[JDBC]]進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱[[數(shù)據(jù)庫(kù)]]。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在[[Servlet]]/[[JSP]]的[[Web]]應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用[[EJB]]的[[J2EE]]架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。 ==簡(jiǎn)介== 大多數(shù)[[應(yīng)用程序]]都需要處理[[數(shù)據(jù)]]。Java應(yīng)用程序運(yùn)行時(shí),往往把數(shù)據(jù)封裝為相互連接的對(duì)象[[網(wǎng)絡(luò)]],但是當(dāng)程序結(jié)束時(shí),這些對(duì)象就會(huì)消失在一團(tuán)邏輯中,所以需要有一些保存它們的方法。有時(shí)候,甚至在編寫應(yīng)用程序之前,數(shù)據(jù)就已經(jīng)存在了,所以需要有讀入它們和將其表示為對(duì)象的方法。手動(dòng)編寫[[代碼]]來(lái)執(zhí)行這些任務(wù)不僅單調(diào)乏味、易于出錯(cuò),而且會(huì)占用整個(gè)應(yīng)用程序的很大一部分開(kāi)發(fā)工作量。 優(yōu)秀的面向?qū)ο箝_(kāi)發(fā)人員厭倦了這種重復(fù)性的勞動(dòng),他們開(kāi)始采用通常的“積極”偷懶做法,即創(chuàng)建工具,使整個(gè)過(guò)程自動(dòng)化。對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),這種努力的最大成果就是對(duì)象/關(guān)系映射(ORM)工具。 這類工具有很多,從昂貴的商業(yè)產(chǎn)品到內(nèi)置于J2EE中的EJB標(biāo)準(zhǔn)。然而,在很多情況下,這些工具具有自身的復(fù)雜性,使得開(kāi)發(fā)人員必須學(xué)習(xí)使用它們的詳細(xì)規(guī)則,并修改組成應(yīng)用程序的類以滿足映射系統(tǒng)的需要。由于這些工具為應(yīng)付更加嚴(yán)格和復(fù)雜的企業(yè)需求而不斷發(fā)展,于是在比較簡(jiǎn)單和常見(jiàn)的場(chǎng)景中,使用它們所面臨的復(fù)雜性反而蓋過(guò)了所能獲得的好處。這引起了一場(chǎng)革命,促進(jìn)了輕量級(jí)解決方案的出現(xiàn),而Hibernate就是這樣的一個(gè)例子。 ==核心接口== Hibernate的核心接口一共有5個(gè),分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個(gè)核心接口在任何開(kāi)發(fā)中都會(huì)用到。通過(guò)這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。 ===Session接口=== Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見(jiàn)的[[SQL]]語(yǔ)句。)。但需要注意的是Session對(duì)象是非[[線程]]安全的。同時(shí),Hibernate的session不同于JSP應(yīng)用中的HttpSession。這里當(dāng)使用session這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是Hibernate中的session,而以后會(huì)將HttpSession對(duì)象稱為用戶session。 ===SessionFactory接口=== SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory。 ===Configuration接口=== Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。在Hibernate的啟動(dòng)的過(guò)程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對(duì)象。 ===Transaction接口=== Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開(kāi)發(fā)人員也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。 ===Query和Criteria接口=== Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。它可以使用[[HQL]]語(yǔ)言或SQL語(yǔ)句兩種表達(dá)方式。 ==Hibernate主鍵介紹== ===Assigned=== Assigned方式由用戶生成主鍵值,并且要在save()之前指定否則會(huì)拋出異常 特點(diǎn):主鍵的生成值完全由用戶決定,與底層數(shù)據(jù)庫(kù)無(wú)關(guān)。用戶需要維護(hù)主鍵值,在調(diào)用session.save()之前要指定主鍵值。 ===Hilo=== Hilo使用高低位算法生成主鍵,高低位算法使用一個(gè)高位值和一個(gè)低位值,然后把算法得到的兩個(gè)值拼接起來(lái)作為數(shù)據(jù)庫(kù)中的唯一主鍵。Hilo方式需要額外的數(shù)據(jù)庫(kù)表和字段提供高位值來(lái)源。默認(rèn)請(qǐng)況下使用的表是'''hibernate_unique_key''',默認(rèn)字段叫作'''next_hi'''。next_hi必須有一條記錄否則會(huì)出現(xiàn)錯(cuò)誤。 特點(diǎn):需要額外的數(shù)據(jù)庫(kù)表的支持,能保證同一個(gè)數(shù)據(jù)庫(kù)中主鍵的唯一性,但不能保證多個(gè)數(shù)據(jù)庫(kù)之間主鍵的唯一性。Hilo主鍵生成方式由Hibernate 維護(hù),所以Hilo方式與底層數(shù)據(jù)庫(kù)無(wú)關(guān),但不應(yīng)該手動(dòng)修改hi/lo算法使用的表的值,否則會(huì)引起主鍵重復(fù)的異常。 ===Increment=== Increment方式對(duì)主鍵值采取自動(dòng)增長(zhǎng)的方式生成新的主鍵值,但要求底層數(shù)據(jù)庫(kù)的支持[[Sequence]]。如[[Oracle]],[[DB2]]等。需要在映射文件xxx.hbm.xml中加入Increment標(biāo)志符的設(shè)置。 特點(diǎn):由Hibernate本身維護(hù),適用于所有的數(shù)據(jù)庫(kù),不適合多[[進(jìn)程]]并發(fā)更新數(shù)據(jù)庫(kù),適合單一進(jìn)程訪問(wèn)數(shù)據(jù)庫(kù)。不能用于群集環(huán)境。 ===Identity=== Identity當(dāng)時(shí)根據(jù)底層數(shù)據(jù)庫(kù),來(lái)支持自動(dòng)增長(zhǎng),不同的數(shù)據(jù)庫(kù)用不同的主鍵增長(zhǎng)方式。 特點(diǎn):與底層數(shù)據(jù)庫(kù)有關(guān),要求數(shù)據(jù)庫(kù)支持Identity,如[[MySQL]]中是auto_increment, [[SQL Server]] 中是Identity,支持的數(shù)據(jù)庫(kù)有MySql、SQL Server、DB2、[[Sybase]]和''HypersonicSQL''。 Identity無(wú)需Hibernate和用戶的干涉,使用較為方便,但不便于在不同的數(shù)據(jù)庫(kù)之間移植程序。 ===Sequence=== Sequence需要底層數(shù)據(jù)庫(kù)支持Sequence方式,例如Oracle數(shù)據(jù)庫(kù)等 特點(diǎn):需要底層數(shù)據(jù)庫(kù)的支持序列,支持序列的數(shù)據(jù)庫(kù)有DB2、[[PostgreSql]]、Oracle、[[SAPDb]]等在不同數(shù)據(jù)庫(kù)之間移植程序,特別從支持序列的數(shù)據(jù)庫(kù)移植到不支持序列的數(shù)據(jù)庫(kù)需要修改配置文件 ===Native=== Native主鍵生成方式會(huì)根據(jù)不同的底層數(shù)據(jù)庫(kù)自動(dòng)選擇Identity、Sequence、Hilo主鍵生成方式 特點(diǎn):根據(jù)不同的底層數(shù)據(jù)庫(kù)采用不同的主鍵生成方式。由于Hibernate會(huì)根據(jù)底層數(shù)據(jù)庫(kù)采用不同的映射方式,因此便于程序移植,項(xiàng)目中如果用到多個(gè)數(shù)據(jù)庫(kù)時(shí),可以使用這種方式。 ===UUID=== UUID使用128位UUID算法生成主鍵,能夠保證[[網(wǎng)絡(luò)]]環(huán)境下的主鍵唯一性,也就能夠保證在不同數(shù)據(jù)庫(kù)及不同服務(wù)器下主鍵的唯一性。 特點(diǎn);能夠保證數(shù)據(jù)庫(kù)中的主鍵唯一性,生成的主鍵占用比較多的存貯空間 ===Foreign GUID=== Foreign用于一對(duì)一關(guān)系中。GUID主鍵生成方式使用了一種特殊算法,保證生成主鍵的唯一性,支持SQL Server和MySQL ==Hibernate源碼對(duì)照== [[Image:Hibernate source.gif|right]] *net.sf.hibernate.* :該包的類基本上都是接口類和異常類 *net.sf.hibernate.cache.* :[[JCS]]的實(shí)現(xiàn)類 *net.sf.hibernate.cfg.* :配置文件讀取類 *net.sf.hibernate.collection.* :Hibernate集合接口實(shí)現(xiàn)類,例如List,Set,Bag等等,Hibernate之所以要自行編寫集合接口實(shí)現(xiàn)類是為了支持lazy loading *net.sf.hibernate.connection.* :幾個(gè)數(shù)據(jù)庫(kù)連接池的Provider *net.sf.hibernate.dialect.* :支持多種數(shù)據(jù)庫(kù)特性,每個(gè)Dialect實(shí)現(xiàn)類代表一種數(shù)據(jù)庫(kù),描述了該數(shù)據(jù)庫(kù)支持的數(shù)據(jù)類型和其它特點(diǎn),例如是否有AutoIncrement,是否有Sequence,是否有分頁(yè)sql等等 *net.sf.hibernate. eg.* :Hibernate文檔中用到的例子 *net.sf.hibernate.engine.* :這個(gè)包的類作用比較散 *net.sf.hibernate.expression.* :HQL支持的表達(dá)式 *net.sf.hibernate.hq.* :HQL實(shí)現(xiàn) *net.sf.hibernate. id.* :ID生成器 *net.sf.hibernate.impl.* :最核心的包,一些重要接口的實(shí)現(xiàn)類,如果[[Session]],SessionFactory,[[Query]]等 *net.sf.hibernate.jca.* :[[JCA]]支持,把Session包裝為支持JCA的接口實(shí)現(xiàn)類 *net.sf.hibernate.jmx.* :[[JMX]]是用來(lái)編寫App Server的管理程序的,使得App Server可以通過(guò)JMX接口管理Hibernate *net.sf.hibernate.loader.* :也是很核心的包,主要是生成sql語(yǔ)句的 *net.sf.hibernate.lob.* :Blob和Clob支持 *net.sf.hibernate.mapping.* :hbm文件的屬性實(shí)現(xiàn) *net.sf.hibernate.metadata.* :PO的Meta實(shí)現(xiàn) *net.sf.hibernate.odmg.* :ODMG是一個(gè)ORM標(biāo)準(zhǔn),這個(gè)包是ODMG標(biāo)準(zhǔn)的實(shí)現(xiàn)類 *net.sf.hibernate.persister.* :核心包,實(shí)現(xiàn)持久對(duì)象和表之間的映射 *net.sf.hibernate.proxy.* :Proxy和Lazy Loading支持 *net.sf.hibernate. ps.* :該包是PreparedStatment Cache *net.sf.hibernate.sql.* :生成JDBC sql語(yǔ)句的包 *net.sf.hibernate.test.* :測(cè)試類,你可以用junit來(lái)測(cè)試Hibernate *net.sf.hibernate.tool.hbm2ddl.* :用hbm配置文件生成[[DDL]] *net.sf.hibernate.transaction.* :Hibernate Transaction實(shí)現(xiàn)[[類]] *net.sf.hibernate.type.* :Hibernate中定義的持久對(duì)象的屬性的數(shù)據(jù)類型 *net.sf.hibernate.util.* :一些工具類,作用比較散 *net.sf.hibernate.xml.* :[[XML]]數(shù)據(jù)綁定 ==相關(guān)條目== *[[Spring]] *[[JSF]] *[[Struts]] *[[HQL]] ==參考來(lái)源== *http://www.hudong.com/wiki/hibernate *http://baike.baidu.com/view/7291.htm *http://zh.wikipedia.org/wiki/Hibernate [[category:J2EE|H]] [[category:框架|H]] [[category:開(kāi)放源代碼|H]] [[category:Hibernate|H]]
摘要:
請(qǐng)注意,您對(duì)站長(zhǎng)百科的所有貢獻(xiàn)都可能被其他貢獻(xiàn)者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請(qǐng)不要提交。
您同時(shí)也要向我們保證您所提交的內(nèi)容是您自己所作,或得自一個(gè)不受版權(quán)保護(hù)或相似自由的來(lái)源(參閱
Wordpress-mediawiki:版權(quán)
的細(xì)節(jié))。
未經(jīng)許可,請(qǐng)勿提交受版權(quán)保護(hù)的作品!
取消
編輯幫助
(在新窗口中打開(kāi))
取自“
http://www.kktzf.com.cn/wiki/Hibernate
”