浅析Hibernate映射(一)——基本映射
在說(shuō)Hibernate映射之前,先下了解下面的概念。
?
對(duì)象-關(guān)系映射(Object/Relation Mapping,簡(jiǎn)稱ORM),是隨著面向?qū)ο蟮能浖_(kāi)發(fā)方法發(fā)展而產(chǎn)生的,是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù),本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。
?
面向?qū)ο蟮拈_(kāi)發(fā)方法是當(dāng)今企業(yè)級(jí)應(yīng)用開(kāi)發(fā)環(huán)境中的主流開(kāi)發(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ù)無(wú)法直接表達(dá)多對(duì)多關(guān)聯(lián)和繼承關(guān)系。因此,對(duì)象-關(guān)系映射(ORM)系統(tǒng)一般以中間件的形式存在,主要實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射。
簡(jiǎn)單的說(shuō),ORM是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將java程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中
?
實(shí)現(xiàn)ORM的框架很多,其中當(dāng)屬Hibernate最為流行,下面通過(guò)幾篇文章來(lái)看一下Hibernate是如何實(shí)現(xiàn)ORM的,即Hibernate的幾種映射。
?
Hibernate在實(shí)現(xiàn)ORM功能的時(shí)候主要用到的文件有:
??? 1、 映射類(*.java):它是描述數(shù)據(jù)庫(kù)表的結(jié)構(gòu),表中的字段在類中被描述成屬性,將來(lái)就可以實(shí)現(xiàn)把表中的記錄映射成為該類的對(duì)象了。
?
??? 2、映射文件(*.hbm.xml):它是指定數(shù)據(jù)庫(kù)表和映射類之間的關(guān)系,包括映射類和數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系、表字段和類屬性類型的對(duì)應(yīng)關(guān)系以及表字段和類屬性名稱的對(duì)應(yīng)關(guān)系等。
?
??? 3、 hibernate核心配置文件(*.properties/*.cfg.xml):它指定hibernate的一些核心配置,包含與數(shù)據(jù)庫(kù)連接時(shí)需要的連接信息,比如連接哪種數(shù)據(jù)庫(kù)、登錄數(shù)據(jù)庫(kù)的用戶名、登錄密碼以及連接字符串等。映射文件的地址信息也放在這里
?
?
基本映射:
java?對(duì)象
關(guān)系模型
?
實(shí)體類--->表,采用<class>標(biāo)簽映射
實(shí)體類中的普通屬性(不包括集合、自定義類和數(shù)組)------->表字段,采用<property>標(biāo)簽映射
?
映射類:
[java]?view plaincopyprint?
?
注:
實(shí)體類的設(shè)計(jì)原則:
* 實(shí)現(xiàn)無(wú)參的默認(rèn)的構(gòu)造函數(shù)
* 提供一個(gè)標(biāo)識(shí)
* 建議不要使用final修飾實(shí)體類(因?yàn)椴捎?/span>load延時(shí)加載數(shù)據(jù)的時(shí)候會(huì)繼承實(shí)體類生成代理對(duì)象)
* 建議為實(shí)體類生成getter和setter方法(如果不使用,需要用屬性field標(biāo)識(shí))
?
?
?
映射文件具體說(shuō)明:
[html]?view plaincopyprint?
?
注意:如果實(shí)體類的名稱或?qū)嶓w類中屬性的名稱和數(shù)據(jù)庫(kù)關(guān)鍵字重復(fù),將會(huì)出現(xiàn)問(wèn)題,可以考慮采用table屬性和column屬性對(duì)其進(jìn)行重新命名
總結(jié)
以上是生活随笔為你收集整理的浅析Hibernate映射(一)——基本映射的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: web.xml详细介绍
- 下一篇: Hibernate generator小