• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Hibernate框架數(shù)據(jù)持久化的設(shè)計(jì)與實(shí)現(xiàn)

      2019-04-01 15:06向大芳
      科技創(chuàng)新導(dǎo)報(bào) 2019年28期

      向大芳

      摘? ?要:Hibernate是一種數(shù)據(jù)持久化框架,其基于ORM模式,用于解決數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層之間的松散耦合問題。為了提高應(yīng)用系統(tǒng)的數(shù)據(jù)并發(fā)訪問控制能力,構(gòu)建層次清晰的系統(tǒng)架構(gòu),本文深入研究了Hibernate框架的持久化技術(shù),將該技術(shù)應(yīng)用于某企業(yè)生產(chǎn)計(jì)劃管理系統(tǒng),按照低耦合的標(biāo)準(zhǔn),對(duì)數(shù)據(jù)持久化操作與業(yè)務(wù)邏輯進(jìn)行了分離和封裝,進(jìn)一步闡述了應(yīng)用Hibernate框架進(jìn)行數(shù)據(jù)持久化的具體實(shí)現(xiàn)過程。案例表明,Hibernate框架在實(shí)現(xiàn)復(fù)雜業(yè)務(wù)系統(tǒng)時(shí)能極大提高開發(fā)效率和系統(tǒng)的可維護(hù)性,增強(qiáng)了系統(tǒng)的擴(kuò)展性。

      關(guān)鍵詞:Hibernate框架? 數(shù)據(jù)持久化? ORM

      中圖分類號(hào):TP311.13? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ?文章編號(hào):1674-098X(2019)10(a)-0135-05

      Abstract: Hibernate is a data persistence framework based on ORM mode, which is used to realize loose coupling between business logic layer and data access layer. In order to improve the concurrent access control ability of data, build a clear hierarchy of application system architecture, deeply study the Persistence technology of Hibernate framework, apply this technology to an enterprise production planning management system, separate and encapsulate the data persistence operation and business logic according to the low coupling standard. The implementation process of data persistence using hibernate framework is described. The case shows that the Hibernate framework can greatly improve the development efficiency and maintainability of the system while enhancing the scalability of the system.

      Key Words: Hibernate; Data persistent; ORM

      許多傳統(tǒng)生產(chǎn)性國(guó)有企業(yè)中,隨著生產(chǎn)規(guī)模的日益擴(kuò)大,生產(chǎn)的產(chǎn)品的種類也不得增加,這導(dǎo)致生產(chǎn)管理的范圍日益擴(kuò)大,涉及的業(yè)務(wù)邏輯亦日益復(fù)雜,多工段或工種或車間之間的工作協(xié)同也更加困難。在信息化時(shí)代,這些企業(yè)不得不使用信息化技術(shù)和方法來(lái)推動(dòng)和改進(jìn)過去傳統(tǒng)的生產(chǎn)管理流程。其中基于BS架構(gòu)的Web應(yīng)用程序以開發(fā)周期短、可維護(hù)性強(qiáng)、輕量級(jí)、免安裝、強(qiáng)大的用戶體驗(yàn)、完美的交互等特點(diǎn),在各行各業(yè)嶄露頭角,開始扮演重要角色[1-2]。

      隨著web2.0的迅速發(fā)展,但在BS架構(gòu)下選擇何種框架組合構(gòu)建Web應(yīng)用程序使得人們猶豫不決,這其中應(yīng)用什么樣的框架來(lái)進(jìn)行數(shù)據(jù)的持久化更讓開發(fā)者們難以抉擇。就Web應(yīng)用系統(tǒng)開發(fā)中數(shù)據(jù)持久化技術(shù)現(xiàn)狀而言,用于提高應(yīng)用系統(tǒng)開發(fā)效率的成熟方法多種多樣,其中采用Hibernate框架是一個(gè)不錯(cuò)的選擇,其不僅能有效提高應(yīng)用系統(tǒng)的開發(fā)效率,同時(shí)在安全性、穩(wěn)定性和健壯性上都有良好的保證。本文以某國(guó)有企業(yè)生產(chǎn)計(jì)劃管理系統(tǒng)為案例詳細(xì)闡述Hibernate技術(shù)實(shí)現(xiàn)數(shù)據(jù)持久化的過程。

      1? Hibernate技術(shù)分析

      Hibernate是一種在開發(fā)人員中有著廣泛贊譽(yù)的開源框架,其遵循ORM(Object/Relation Mapping)模式,主要通過面向?qū)ο蟮膉ava實(shí)體類POJO到關(guān)系數(shù)據(jù)庫(kù)的映射來(lái)實(shí)現(xiàn)數(shù)據(jù)的持久化,該框架使得開發(fā)人員可以采用面向?qū)ο蟮姆绞絹?lái)開發(fā)應(yīng)用。Hibernate不僅管理POJO到數(shù)據(jù)庫(kù)表的映射,提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法及延遲加載等重要功能,而且還擁有功能強(qiáng)大的查詢語(yǔ)言HQL,減少了開發(fā)時(shí)使用SQL和JDBC處理數(shù)據(jù)的時(shí)間,降低了開發(fā)難度[3]。

      2? 生產(chǎn)計(jì)劃管理系統(tǒng)分析

      該生產(chǎn)計(jì)劃管理系統(tǒng)為某國(guó)有企業(yè)的管理人員、計(jì)劃制定人員、工段(車間)生產(chǎn)人員、倉(cāng)庫(kù)管理人員等提供一個(gè)基于生產(chǎn)全流程的多用戶的生產(chǎn)在線控制環(huán)境。系統(tǒng)包括人員及權(quán)限管理、物資管理、生產(chǎn)計(jì)劃管理、補(bǔ)廢管理、產(chǎn)品出入庫(kù)管理及合同管理等6個(gè)子系統(tǒng)。系統(tǒng)架構(gòu)如圖1所示。為提高訪問開發(fā)效率、減少SQL和JDBC處理數(shù)據(jù)的時(shí)間,同時(shí)也為降低數(shù)據(jù)模塊耦合提高模塊的擴(kuò)展性、可復(fù)用性,系統(tǒng)的數(shù)據(jù)訪問采用Hibernate框架實(shí)現(xiàn)。Hibernate可以實(shí)體對(duì)象到關(guān)系數(shù)據(jù)庫(kù)的映射,利用hibernate將數(shù)據(jù)庫(kù)的訪問和操作進(jìn)一步進(jìn)行獨(dú)立的封裝,采用視圖、存儲(chǔ)過程、緩存等技術(shù),可以極大提升數(shù)據(jù)庫(kù)的性能及可維護(hù)性[4-7]。

      3? 數(shù)據(jù)庫(kù)的設(shè)計(jì)

      生產(chǎn)計(jì)劃管理系統(tǒng)數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)采用開源的關(guān)系數(shù)據(jù)庫(kù)mysql。數(shù)據(jù)庫(kù)的設(shè)計(jì)完全遵從關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)范和要求,為提升系統(tǒng)的部署效率,不使用hibernate通過映射生成表結(jié)構(gòu),而是自主建立了基礎(chǔ)數(shù)據(jù)表,表的關(guān)系結(jié)構(gòu)如圖2所示。

      4? 領(lǐng)域?qū)ο髮拥脑O(shè)計(jì)

      領(lǐng)域?qū)ο螅―omain Object)本質(zhì)上就是實(shí)體類,它描述了系統(tǒng)業(yè)務(wù)邏輯的各類狀態(tài),作用于表現(xiàn)層、業(yè)務(wù)層和持久層并被持久化到數(shù)據(jù)庫(kù)中。使用hibernate框架可以方便快捷的利用領(lǐng)域?qū)ο髮右悦嫦驅(qū)ο蟮姆绞綄?duì)數(shù)據(jù)庫(kù)表進(jìn)行增、刪、改、查操作。領(lǐng)域?qū)ο蟊旧聿⒉坏韧跀?shù)據(jù)庫(kù)中的表,但就大多數(shù)應(yīng)用系統(tǒng)來(lái)說(shuō),一個(gè)領(lǐng)域?qū)ο笸加成錇閿?shù)據(jù)庫(kù)中對(duì)應(yīng)的二維表。本系統(tǒng)領(lǐng)域?qū)ο髮拥念惾绫?所示,類中為每個(gè)屬性(成員變量)提供了getter和setter方法。

      5? 領(lǐng)域?qū)ο蟮某志没瘜?shí)現(xiàn)

      持久層的功能包含兩個(gè)方面:一方面將領(lǐng)域?qū)ο蟪志没綌?shù)據(jù)表中;另一方面需要從數(shù)據(jù)庫(kù)表中加載數(shù)據(jù)并實(shí)例化為領(lǐng)域?qū)ο?。在使用Hibernate進(jìn)行持久化時(shí),從實(shí)體類到表的具體映射規(guī)則用配置文件進(jìn)行描述,一個(gè)實(shí)體類對(duì)應(yīng)1個(gè)映射配置文件,通常映射配置文件命名為:實(shí)體類名.hbm.xml,比如Authority的映射配置文件為Authority.hbm.xml。Authority類有id、name、displayName等3個(gè)屬性,其配置代碼如下:

      在上述映射配置文件中,使用table指定了Authority實(shí)體類對(duì)應(yīng)映射到關(guān)系數(shù)據(jù)庫(kù)中的表名,id標(biāo)簽用來(lái)描述表的主鍵,property標(biāo)簽用于對(duì)普通屬性進(jìn)行配置。與數(shù)據(jù)庫(kù)的設(shè)計(jì)中存在聯(lián)系表相對(duì)應(yīng)的是,應(yīng)用系統(tǒng)中的對(duì)象很少是孤立存在的,實(shí)體對(duì)象之間是存在某種關(guān)聯(lián)關(guān)系的,這種關(guān)聯(lián)關(guān)系表現(xiàn)為3類:1對(duì)1、1對(duì)N及N對(duì)N。比如用戶實(shí)體類User和權(quán)限實(shí)體類Authority就是一種N對(duì)1的關(guān)聯(lián)關(guān)系。同時(shí),因?yàn)閷?shí)體對(duì)象間的訪問方向的不同,Hibernate將實(shí)體間的關(guān)聯(lián)關(guān)系進(jìn)一步細(xì)分為單向1對(duì)1關(guān)聯(lián)、單向1對(duì)N關(guān)聯(lián)、單向N對(duì)1關(guān)聯(lián)、單向N對(duì)N關(guān)聯(lián)、雙向1對(duì)1關(guān)聯(lián)、雙向1對(duì)N關(guān)聯(lián)以及雙向N對(duì)N關(guān)聯(lián)等7種。在hibernate映射配置文件中,1對(duì)1關(guān)聯(lián)使用one-to-one標(biāo)簽配置、N對(duì)1關(guān)聯(lián)使用many-to-one標(biāo)簽配置、1對(duì)N關(guān)聯(lián)使用one-to-many標(biāo)簽配置、N對(duì)N關(guān)聯(lián)使用many-to- many標(biāo)簽配置;單向關(guān)聯(lián)只需要一端實(shí)體配置即可,而雙向關(guān)聯(lián)關(guān)系兩端的實(shí)體需要同時(shí)配置。本系統(tǒng)將實(shí)體類User和權(quán)限實(shí)體類Authority配置為單向N到1的關(guān)聯(lián),即從User端可以訪問Authority對(duì)象,但從Authority端無(wú)法訪問User對(duì)象。User實(shí)體類的映射配置文件描述如下:

      映射文件中的class標(biāo)簽完成了對(duì)持久化類的配置,但此時(shí)仍無(wú)法操作數(shù)據(jù)庫(kù),Hibernate需要連接數(shù)據(jù)庫(kù)的相關(guān)信息,比如:數(shù)據(jù)庫(kù)url、驅(qū)動(dòng)、登陸用戶名和密碼等。Hibernate框架使用名為hibernate.cfg.xml的配置文件來(lái)配置這些信息。配置文件的結(jié)構(gòu)如下:

      hibernate使用Session管理持久化對(duì)象以便將對(duì)象狀態(tài)同步到數(shù)據(jù)庫(kù)中,Session是由SessionFactory工廠創(chuàng)建的會(huì)話。SessionFactory是數(shù)據(jù)庫(kù)編譯后的內(nèi)存鏡像,負(fù)責(zé)初始化Hibernate,一個(gè)應(yīng)用對(duì)應(yīng)一個(gè)SessionFactory,其充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理。SessionFactory對(duì)象由Configuration對(duì)象生成,Configuration類調(diào)用configure()方法加載hibernate.cfg.xml文件。實(shí)現(xiàn)將一個(gè)實(shí)體對(duì)象由瞬態(tài)轉(zhuǎn)換為持久化狀態(tài)即往數(shù)據(jù)庫(kù)中插入一個(gè)User對(duì)象,Session提供了兩個(gè)方法:Serializable save(Object object)和void persist(Object object)。User對(duì)象的持久化代碼如下所示:

      此外,Session提供了一系列持久化對(duì)象的操作方法,包括:加載持久化對(duì)象方法:Object load(Class theClass,? ? ? ? ? ? Serializable id)和Object get(Class clazz, Serializable id);更新持久化對(duì)象的方法void update(Object object)和Object merge(Object object);刪除持久化對(duì)象的方法void delete(Object object)。使用這些方法就可以實(shí)現(xiàn)對(duì)持久化對(duì)象的增刪改查操作了,這些操作完全是面向?qū)ο蟮?,無(wú)需考慮繁雜的關(guān)系數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)。

      6? 結(jié)語(yǔ)

      在本案例中,使用Hibernate框架構(gòu)建web應(yīng)用,開發(fā)人員可以采用面向?qū)ο蟮姆绞絹?lái)進(jìn)行開發(fā)。Hibernate實(shí)現(xiàn)了POJO到數(shù)據(jù)庫(kù)表的映射,應(yīng)用Hibernate的查詢語(yǔ)言HQL及延遲加載等功能,極大的減少了開發(fā)時(shí)使用SQL和JDBC處理數(shù)據(jù)的時(shí)間,降低了開發(fā)難度。同時(shí),應(yīng)用Hibernate框架實(shí)現(xiàn)了數(shù)據(jù)持久化對(duì)象與業(yè)務(wù)邏輯分離、關(guān)系數(shù)據(jù)庫(kù)與數(shù)據(jù)持久化對(duì)象的分離,完美解決了應(yīng)用系統(tǒng)開發(fā)中的低耦合問題。案例表明,Hibernate框架在實(shí)現(xiàn)復(fù)雜業(yè)務(wù)系統(tǒng)時(shí)能極大提高開發(fā)效率和系統(tǒng)的可維護(hù)性,增強(qiáng)了系統(tǒng)的擴(kuò)展性。

      參考文獻(xiàn)

      [1] 戴敏斐,齊開悅,陳劍波,等.基于Web2.0的個(gè)性化廣告推介建模研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(1):183-186.

      [2] 郭濤,曹建,安晨光,等.基于BS架構(gòu)的DGA在線監(jiān)測(cè)數(shù)據(jù)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(8):82-85.

      [3] 蔡學(xué)燾.hibernate開發(fā)及整合應(yīng)用大全[M].北京:清華大學(xué)出版社,2006.

      [4] 李剛.輕量級(jí)Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2013.

      [5] 陳曉暉,姚宇明,鄭明華.基于Struts和HIBERNATE架構(gòu)的保險(xiǎn)公司核心業(yè)務(wù)系統(tǒng)[J].計(jì)算機(jī)工程,2006,32(4):264-268.

      [6] 馮潤(rùn)民.基于SSH的高校學(xué)術(shù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(6):280-282.

      [7] 丁夷,金永賢. 基于Struts+Spring+Hibernate框架的手機(jī)圖書館服務(wù)系統(tǒng)[J].大學(xué)圖書館學(xué)報(bào),2011,29(1):77-82.

      洮南市| 太和县| 乃东县| 利津县| 梁平县| 板桥市| 商河县| 蓬安县| 松潘县| 浏阳市| 襄城县| 大安市| 行唐县| 侯马市| 茂名市| 临西县| 阿拉善右旗| 五大连池市| 杂多县| 新河县| 丰城市| 恭城| 塔河县| 白玉县| 西宁市| 涟水县| 理塘县| 禹州市| 大埔县| 永城市| 赫章县| 利川市| 吴江市| 邵东县| 那坡县| 孙吴县| 华阴市| 枣阳市| 巴楚县| 本溪市| 关岭|