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

Hibernate實(shí)現(xiàn)ORM:簡(jiǎn)介及背景

開發(fā) 后端
ORM是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。本質(zhì)上,ORM就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。ORM是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的。

ORM(Object/Relation Mapping)是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù)。 簡(jiǎn)單的說,ORM是通過使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將Java程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。 雖然同時(shí)暗示者額外的執(zhí)行開銷;但是如果ORM作為一種中間件實(shí)現(xiàn),則會(huì)有很多機(jī)會(huì)做優(yōu)化,而這些在手寫的持久層并不存在。 更重要的是用于控制轉(zhuǎn)換的元數(shù)據(jù)需要提供和管理;但是同樣,這些花費(fèi)要比維護(hù)手寫的方案要少;而且就算是遵守ODMG (Object Data Management Group )規(guī)范的對(duì)象數(shù)據(jù)庫(kù)依然需要類級(jí)別的元數(shù)據(jù)(Meta Data)。

ORM是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的。面向?qū)ο蟮拈_發(fā)方法是當(dāng)今企業(yè)級(jí)應(yīng)用開發(fā)環(huán)境中的主流開發(fā)方法,關(guān)系數(shù)據(jù)庫(kù)是企業(yè)級(jí)應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲(chǔ)系統(tǒng)。對(duì)象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式,業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對(duì)象,在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對(duì)象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數(shù)據(jù)庫(kù)中,關(guān)系數(shù)據(jù)無法直接表達(dá)多對(duì)多關(guān)聯(lián)和繼承關(guān)系。因此, ORM系統(tǒng)一般以中間件的形式存在,主要實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射。

使用ORM的元數(shù)據(jù)描述對(duì)象與數(shù)據(jù)庫(kù)間的映射,可以提高系統(tǒng)的開發(fā)效率和系統(tǒng)性能,具有可維護(hù)性和廠家獨(dú)立性。Hibernate作為ORM框架的典型代表具有成熟、流行、功能強(qiáng)大的優(yōu)點(diǎn)。并逐漸發(fā)展成Java 持久層事實(shí)上的標(biāo)準(zhǔn)。

在OOD(Object-Oriented Design)中我們用對(duì)象來描述真實(shí)世界,但在關(guān)系數(shù)據(jù)庫(kù)還是數(shù)據(jù)的常用永久存儲(chǔ)技術(shù)背景下,我們需要一種有效技術(shù)來完成對(duì)象到關(guān)系數(shù)據(jù)的轉(zhuǎn)化(即對(duì)象的持久化)。而對(duì)象之間有許多關(guān)系數(shù)據(jù)無法表達(dá)的概念,如關(guān)聯(lián)和繼承等。如果直接通過JDBC來開發(fā)自己的持久化層很有可能影響項(xiàng)目的進(jìn)度和持久層的可靠性,并嚴(yán)重影響代碼的可維護(hù)性。

Hibernate是一種運(yùn)用DAO(Data Access Object)設(shè)計(jì)模式來實(shí)現(xiàn)對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間映射(O/R Mapping)的開源框架。它對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,使得Java程序員可以完全使用面向?qū)ο蟮木幊趟季S來操作關(guān)系數(shù)據(jù)庫(kù),是持久層的一項(xiàng)實(shí)現(xiàn)技術(shù)。相比于其它持久層實(shí)現(xiàn)技術(shù)如JDBC、EJB(Entity Beans)、JDO(Java Data Object)等,Hibernate易于掌握,更加符合編程人員的面向?qū)ο笏季S,Hibernate擁有自己的一種查詢語言(HQL),它是完全面向?qū)ο蟮摹?/P>

Hibernate通過創(chuàng)建與數(shù)據(jù)庫(kù)中的表對(duì)應(yīng)的持久化對(duì)象,然后再通過影射文件將持久化對(duì)象中的屬性與數(shù)據(jù)庫(kù)表中的字段對(duì)應(yīng)起來。為Java 程序員提供了面向?qū)ο蟮腁PI和接口來操縱數(shù)據(jù)庫(kù),從而避免了在業(yè)務(wù)邏輯中嵌入大量的JDBC訪問和事物控制代碼。Hibernate運(yùn)行時(shí)的結(jié)構(gòu)如下圖。

其中,SessionFactory保存了對(duì)當(dāng)前數(shù)據(jù)庫(kù)配置的所有映射關(guān)系,它是將某個(gè)數(shù)據(jù)庫(kù)的映射關(guān)系經(jīng)過編譯之后全部保存在內(nèi)存中的。它還是生成Session的工廠,它在進(jìn)行實(shí)例化的過程中將會(huì)用到ConnectionProvider。一個(gè)SessionFactory對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)連接改變時(shí)需要修改SessionFactory 。Session是進(jìn)行持久化操作的基礎(chǔ),所有的持久化操作都是在Session的基礎(chǔ)上進(jìn)行的。它相當(dāng)與JDBC中的Connection。它是Hibernate的持久化管理器的核心,提供了一系列的持久化操作方法。另外,它還持有一個(gè)針對(duì)持久化對(duì)象的一級(jí)緩存,在遍歷持久化對(duì)象或者根據(jù)持久化標(biāo)識(shí)查找對(duì)象的時(shí)候會(huì)用到。Transaction在功能上和數(shù)據(jù)庫(kù)中的事務(wù)完全一樣,通過它實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中事務(wù)的控制。Transaction對(duì)象是Session對(duì)象產(chǎn)生的,所以他的生命周期比Session短。一個(gè)Session的生命周期中可以有多個(gè)Transaction對(duì)象。ConnectionProvider的主要作用是生成與數(shù)據(jù)庫(kù)建立了連接的JDBC對(duì)象,同時(shí)他還作為數(shù)據(jù)庫(kù)連接的緩沖池。通過ConnectionProvider實(shí)現(xiàn)了應(yīng)用程序和底層的DataSource和DriverManager的隔離。TransactionFactory:是生成Transaction對(duì)象的工廠,通過TransactionFactory實(shí)現(xiàn)了事務(wù)的封裝,使其具體的實(shí)現(xiàn)方法與應(yīng)用程序無關(guān)。

Hibernate作為持久層的主流框架,不僅可以應(yīng)用在桌面應(yīng)用程序開發(fā),也可以用在WEB應(yīng)用程序的開發(fā)。從前面的分析可以看出,Hibernate使用數(shù)據(jù)庫(kù)和配置信息來為應(yīng)用程序提供持久化服務(wù)(以及持久的對(duì)象)。系統(tǒng)使用的Hibernate的是一個(gè)全面的體系結(jié)構(gòu),將應(yīng)用層從底層的JDBC(Java Data Base Connectivity)/JTA(Java Transaction API)/JNDI(Java Naming and Directory Interface)中抽象出來,而讓Hibernate來處理這些細(xì)節(jié)。

應(yīng)用層到底層

 

責(zé)任編輯:book05 來源: 百度博客
相關(guān)推薦

2009-09-22 17:13:53

Hibernate O

2009-06-02 17:27:28

Hibernate框架ORM

2009-06-30 14:08:00

Hibernate緩存

2009-06-12 14:40:38

Hibernate AHibernate接口

2012-06-02 01:36:22

HibernateJava持久層框架

2009-09-22 13:09:06

Hibernateorm框架

2009-09-21 17:55:14

Hibernate O

2009-09-28 11:12:52

Hibernate O

2009-09-24 16:53:47

Hibernate A

2012-03-09 09:26:39

JavaHibernate

2009-09-21 13:19:06

Hibernate s

2009-09-27 09:46:45

Hibernate會(huì)話

2009-09-29 17:00:08

Hibernate c

2009-09-28 13:45:59

Hibernate歷史

2009-06-02 17:18:10

hibernate框架簡(jiǎn)介

2009-09-24 08:48:54

Hibernate技術(shù)

2021-01-03 17:14:16

ORMObjective S運(yùn)行

2009-06-10 18:19:09

Android平臺(tái)簡(jiǎn)史Android平臺(tái)簡(jiǎn)介

2009-08-13 11:39:02

LINQ to Dat

2011-08-31 10:12:26

MTK手機(jī)平臺(tái)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品一区二区福利视频 | 伊人久久一区二区 | 久久久一| 国产精品毛片一区二区在线看 | 在线播放国产视频 | 伊人国产精品 | 免费在线黄 | 伊人久久在线观看 | 福利片一区二区 | 一级黄a | 久久久成人精品 | 欧美一级网站 | 精品国产精品国产偷麻豆 | 日韩一区二区福利 | 免费v片在线观看 | 国产1区在线| 国产精品久久久久久 | 久久精品二区 | 亚洲三级免费看 | 国产视频一二三区 | 国产资源网| 日本特黄a级高清免费大片 特黄色一级毛片 | 日韩第一页 | 超碰97人人人人人蜜桃 | 国产精品成人一区二区三区夜夜夜 | 免费一区二区在线观看 | 性视频网 | 亚洲综合一区二区三区 | 性做久久久久久免费观看欧美 | 国产精品美女久久久久久久网站 | www.99热这里只有精品 | 亚洲精品一区二区三区中文字幕 | 最新高清无码专区 | 久久久久黑人 | 中文字幕视频三区 | 成人久久一区 | 国产一级一片免费播放 | 亚洲高清在线免费观看 | 免费国产视频在线观看 | 看亚洲a级一级毛片 | 国产一区二区三区免费观看在线 |