• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

    李蘋 孫若賢

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

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

    中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)03-0012-02

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

    1 Hibernate的運行原理

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

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

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

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

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

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

    ……

    (2)創(chuàng)建持久化類,將Java對象永久保存在數(shù)據(jù)庫中,當程序再次運行時重新加載到內(nèi)存,并重新構(gòu)造出對象。創(chuàng)建一個與學(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)建擴展名為hbm.xml的 XML文件來指定對象和關(guān)系數(shù)據(jù)之間的映射關(guān)系,在運行時,Hibernate將根據(jù)這個映射文件,將Student類映射到STUDENT表。

    (4)CRUD操作

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

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

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

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

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

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

    4 結(jié)束語

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

    參考文獻:

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

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

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

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

    猜你喜歡
    關(guān)聯(lián)校長對象
    神秘來電
    不懼于新,不困于形——一道函數(shù)“關(guān)聯(lián)”題的剖析與拓展
    “一帶一路”遞進,關(guān)聯(lián)民生更緊
    奇趣搭配
    智趣
    基于熵的快速掃描法的FNEA初始對象的生成方法
    區(qū)間對象族的可鎮(zhèn)定性分析
    論校長的修養(yǎng)
    好校長是怎么煉就的?
    校長給力“九個一”
    尚义县| 宜君县| 昂仁县| 钟祥市| 泸水县| 达拉特旗| 封开县| 郓城县| 通江县| 蒙阴县| 浪卡子县| 阿勒泰市| 翁牛特旗| 湖州市| 敖汉旗| 绥江县| 山东省| 五寨县| 岳普湖县| 长武县| 淮北市| 铜川市| 洛南县| 叶城县| 宣威市| 杭锦后旗| 洱源县| 牙克石市| 汝州市| 东乌珠穆沁旗| 行唐县| 吉林市| 奈曼旗| 鹿泉市| 开平市| 招远市| 莱阳市| 山阴县| 界首市| 黔南| 巴南区|