国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Hibernate數(shù)據(jù)持久化方法應(yīng)用研究

2016-04-07 13:32李蘋孫若賢
電腦知識(shí)與技術(shù) 2016年3期
關(guān)鍵詞:關(guān)聯(lián)校長對(duì)象

李蘋 孫若賢

摘要:Hibernate可以用映射關(guān)聯(lián)的方法解決面向?qū)ο蠹夹g(shù)與關(guān)系數(shù)據(jù)庫技術(shù)之間不匹配的問題,將應(yīng)用程序中的對(duì)象數(shù)據(jù)持久化到關(guān)系數(shù)據(jù)庫中。該文分析了Hibernate的工作原理、CRUD實(shí)現(xiàn)技術(shù),給出了關(guān)聯(lián)關(guān)系的映射實(shí)例。

關(guān)鍵詞:Hibernate;數(shù)據(jù)持久化

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)03-0012-02

Java程序與關(guān)系數(shù)據(jù)庫通信,可以使用JDBC編程技術(shù),將SQL語句嵌入到Java宿主語言中混合編程,程序中的代碼及SQL語句包含了對(duì)象模型與關(guān)系數(shù)據(jù)模型之間的映射關(guān)系。然而,嵌入了SQL語句的Java語言降低了程序的可讀性及獨(dú)立性,程序員需要面向?qū)ο笈c面向過程的思維轉(zhuǎn)換。利用Hibernate技術(shù)可以用面向?qū)ο缶幊趟季S來操縱數(shù)據(jù)庫,達(dá)到操作對(duì)象就是操作數(shù)據(jù)庫的目標(biāo),可以把SQL語句從程序代碼中分離出去,實(shí)現(xiàn)將內(nèi)存中的一個(gè)對(duì)象映射成關(guān)系數(shù)據(jù)庫表中一條記錄的持久化操作。

1 Hibernate的運(yùn)行原理

Hibernate是屬于持久化的概念,是將內(nèi)存中的數(shù)據(jù)模型轉(zhuǎn)換為存儲(chǔ)模型,將實(shí)體類的定義、類的屬性與數(shù)據(jù)庫中的表和字段映射起來。

Hibernate通過Configuration類加載配置文件到內(nèi)存,讀取并解析配置文件,讀取并解析映射信息,創(chuàng)建SessionFactory對(duì)象。每個(gè)SessionFactory類的實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)庫,并負(fù)責(zé)創(chuàng)建Session實(shí)例。Session負(fù)責(zé)管理所有與持久化相關(guān)的CRUD操作。

2 Hibernate實(shí)現(xiàn)CRUD應(yīng)用

用Hibernate實(shí)現(xiàn)對(duì)關(guān)系模式:學(xué)生(學(xué)號(hào),姓名,性別)的持久化操作,步驟如下:

(1)配置hibernate.cfg.xml文件,用于存放連接數(shù)據(jù)庫的有關(guān)信息。

root123456com.mysql.jdbc.Driverjdbc:mysql:///hibernateorg.hibernate.dialect.MySQLDialect

……

(2)創(chuàng)建持久化類,將Java對(duì)象永久保存在數(shù)據(jù)庫中,當(dāng)程序再次運(yùn)行時(shí)重新加載到內(nèi)存,并重新構(gòu)造出對(duì)象。創(chuàng)建一個(gè)與學(xué)生表相關(guān)的持久化類,代碼如下:

public class Student {

private Integer sid;

private String sno;

private String sname;

private String ssex;

public Integer getSid() {

return sid; }

public void setSid(Integer sid) {

this.sid = sid; }

public String getSno() {

return sno; }

public void setSno(String sno) {

this.sno = sno; }

public String getSname() {

return sname; }

public void setSname(String sname) {

this.sname = sname; }

public String getSsex() {

return ssex; }

public void setSsex(String ssex) {

this.ssex = ssex; }}

(3)創(chuàng)建擴(kuò)展名為hbm.xml的 XML文件來指定對(duì)象和關(guān)系數(shù)據(jù)之間的映射關(guān)系,在運(yùn)行時(shí),Hibernate將根據(jù)這個(gè)映射文件,將Student類映射到STUDENT表。

(4)CRUD操作

調(diào)用Session的save()方法,把對(duì)象持久化到數(shù)據(jù)庫中,相當(dāng)于對(duì)表執(zhí)行INSERT操作。調(diào)用createQuery()方法對(duì)數(shù)據(jù)庫進(jìn)行查詢,相當(dāng)于對(duì)表上執(zhí)行SELECT操作。調(diào)用get()方法加載對(duì)象,可以修改對(duì)象的屬性,相當(dāng)于對(duì)表執(zhí)行UPDATE操作。調(diào)用delete()方法刪除參數(shù)指定的對(duì)象,相當(dāng)于對(duì)表執(zhí)行DELETE操作。

3 Hiberbate映射實(shí)體關(guān)聯(lián)關(guān)系應(yīng)用

在數(shù)據(jù)持久化操作中,存在實(shí)體關(guān)聯(lián)關(guān)系的映射,可以將數(shù)據(jù)庫中的一對(duì)一、一對(duì)多、多對(duì)多聯(lián)系映射到具體的對(duì)象操作中。實(shí)例如下:

關(guān)系模式學(xué)校(學(xué)校編號(hào),名稱)與校長(校長編號(hào),姓名)存在一對(duì)一的聯(lián)系,表明一所學(xué)校只有一個(gè)校長,一個(gè)校長只有在一所學(xué)校任職。可以采用基于外鍵的雙向一對(duì)一關(guān)聯(lián)映射。在創(chuàng)建的學(xué)校實(shí)例類中加入校長編號(hào)屬性,在校長類中加入學(xué)校編號(hào)屬性。并實(shí)現(xiàn)該屬性的setXxx()和getXxx()方法,分別用來獲取關(guān)聯(lián)和設(shè)置關(guān)聯(lián)的對(duì)象,即可以從學(xué)校查詢到校長,也可以從校長查詢到任職學(xué)校。在校長類的對(duì)象關(guān)系映射文件中通過many-to-one元素映射學(xué)校編號(hào)屬性,指定unqiue的屬性為true,表示校長實(shí)體到學(xué)校實(shí)體的一對(duì)一聯(lián)系。在學(xué)校類的對(duì)象映射文件中通過one-to-one元素映射從學(xué)校實(shí)體到校長實(shí)體的一對(duì)一關(guān)系。

關(guān)系模式學(xué)生(學(xué)號(hào),姓名,性別)與班級(jí)(班級(jí)號(hào),班級(jí)名)存在多對(duì)一的聯(lián)系,表明一個(gè)學(xué)生只能在一個(gè)班級(jí),一個(gè)班級(jí)可以有多個(gè)學(xué)生??捎秒p向一對(duì)多關(guān)系映射。在班級(jí)類中定義集合類型的屬性,用來存儲(chǔ)學(xué)生對(duì)象,在學(xué)生類中定義班級(jí)類的屬性。在學(xué)生類的對(duì)象映射文件中用many-to-one元素指定被關(guān)聯(lián)的類的屬性為班級(jí),外鍵為班級(jí)號(hào)。在班級(jí)類的對(duì)象映射文件中用one-to-many元素映射學(xué)生類,用集合的方式進(jìn)行屬性設(shè)置。

關(guān)系模式課程(課程,課程名)與學(xué)生存在多對(duì)多的聯(lián)系,表明一個(gè)學(xué)生可以選多門課程,一門課程可以有多個(gè)學(xué)生選修??捎秒p向多對(duì)多關(guān)聯(lián)映射。在學(xué)生類中定義集合類型的課程屬性,用來存儲(chǔ)課程類對(duì)象。在課程類中定義集合類型的學(xué)生屬性,用來存儲(chǔ)學(xué)生類對(duì)象。在學(xué)生類的對(duì)象映射文件中用many-to-many元素指定被關(guān)聯(lián)的類的屬性為班級(jí),用set元素映射集合屬性課程。在班級(jí)類的對(duì)象映射文件中用many-to-many元素指定被關(guān)聯(lián)的類的屬性為學(xué)生,用set元素映射集合屬性學(xué)生。

4 結(jié)束語

使用Hibernate技術(shù),程序員可以用面向?qū)ο蟮姆椒ㄔL問數(shù)據(jù)庫,使數(shù)據(jù)的管理和操作相分離,提高開發(fā)效率。

參考文獻(xiàn):

[1] 許勇,王黎.Struts 2+Hibernate+Spring整合開發(fā)深入剖析與落伍應(yīng)用[M].北京:清華大學(xué)出版社,2013.

[2] 王國輝,馬文強(qiáng).Hibernate應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2007.

[3] 工業(yè)和信息化部人才交流中心藍(lán)橋杯軟件大賽專家委員會(huì).使用Hibernate框架輕松連接數(shù)據(jù)庫[M].北京:電子工業(yè)出版社,2013.

[4] 孫衛(wèi)琴.Hibernate逍遙游記[M].北京:電子工業(yè)出版社,2010.

猜你喜歡
關(guān)聯(lián)校長對(duì)象
神秘來電
不懼于新,不困于形——一道函數(shù)“關(guān)聯(lián)”題的剖析與拓展
“一帶一路”遞進(jìn),關(guān)聯(lián)民生更緊
奇趣搭配
智趣
基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
論校長的修養(yǎng)
好校長是怎么煉就的?
校長給力“九個(gè)一”