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

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

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

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

使用ORM的元數(shù)據(jù)描述對象與數(shù)據(jù)庫間的映射,可以提高系統(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)中我們用對象來描述真實(shí)世界,但在關(guān)系數(shù)據(jù)庫還是數(shù)據(jù)的常用永久存儲技術(shù)背景下,我們需要一種有效技術(shù)來完成對象到關(guān)系數(shù)據(jù)的轉(zhuǎn)化(即對象的持久化)。而對象之間有許多關(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)對象和關(guān)系數(shù)據(jù)庫之間映射(O/R Mapping)的開源框架。它對JDBC進(jìn)行了輕量級的對象封裝,使得Java程序員可以完全使用面向?qū)ο蟮木幊趟季S來操作關(guān)系數(shù)據(jù)庫,是持久層的一項(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ù)庫中的表對應(yīng)的持久化對象,然后再通過影射文件將持久化對象中的屬性與數(shù)據(jù)庫表中的字段對應(yīng)起來。為Java 程序員提供了面向?qū)ο蟮腁PI和接口來操縱數(shù)據(jù)庫,從而避免了在業(yè)務(wù)邏輯中嵌入大量的JDBC訪問和事物控制代碼。Hibernate運(yùn)行時的結(jié)構(gòu)如下圖。

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

2009-09-21 17:55:14

Hibernate O

2012-06-02 01:36:22

HibernateJava持久層框架

2009-09-22 13:09:06

Hibernateorm框架

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-27 09:46:45

Hibernate會話

2009-09-29 17:00:08

Hibernate c

2009-09-21 13:19:06

Hibernate s

2009-09-28 13:45:59

Hibernate歷史

2009-09-24 08:48:54

Hibernate技術(shù)

2009-06-02 17:18:10

hibernate框架簡介

2021-01-03 17:14:16

ORMObjective S運(yùn)行

2011-08-31 10:12:26

MTK手機(jī)平臺

2009-08-13 11:39:02

LINQ to Dat

2009-06-10 18:19:09

Android平臺簡史Android平臺簡介
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 在线亚洲免费 | 精品美女视频在免费观看 | 特一级毛片 | 夜久久 | 国产精品91网站 | 日韩视频91| 欧美精品一区三区 | 日本三级网站在线 | 欧美1区2区 | 国产精品一卡 | 91精品国产综合久久精品 | 超碰在线播 | 久久不卡| 色视频一区二区 | 成人精品一区 | 一级黄色片免费在线观看 | 国产日韩精品一区二区 | 欧美日韩在线播放 | 一区二区三区视频在线免费观看 | 2018天天干天天操 | 国产成人高清视频 | 欧美区日韩区 | 久久手机在线视频 | 视频一区二区三区中文字幕 | 日韩精品一区二区三区四区视频 | 亚洲图片一区二区三区 | 日韩在线不卡 | 中文一区| 色精品视频 | 视频在线亚洲 | 国产69精品久久99不卡免费版 | 欧美国产视频 | 偷拍自拍第一页 | 一级一级一级毛片 | 欧美一级免费看 | 91大神新作在线观看 | 日韩一区二区免费视频 | 国产一区二区在线免费播放 | 自拍偷拍中文字幕 | 欧美高清性xxxxhdvideosex | 伊人久麻豆社区 |