999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-04-01 15:06:00向大芳
科技創(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ù)和方法來推動(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)用什么樣的框架來進(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ù)的映射來實(shí)現(xiàn)數(shù)據(jù)的持久化,該框架使得開發(fā)人員可以采用面向?qū)ο蟮姆绞絹黹_發(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)來說,一個(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ū)ο蟆T谑褂肏ibernate進(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)簽用來描述表的主鍵,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端無法訪問User對(duì)象。User實(shí)體類的映射配置文件描述如下:

映射文件中的class標(biāo)簽完成了對(duì)持久化類的配置,但此時(shí)仍無法操作數(shù)據(jù)庫(kù),Hibernate需要連接數(shù)據(jù)庫(kù)的相關(guān)信息,比如:數(shù)據(jù)庫(kù)url、驅(qū)動(dòng)、登陸用戶名和密碼等。Hibernate框架使用名為hibernate.cfg.xml的配置文件來配置這些信息。配置文件的結(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ū)ο蟮模瑹o需考慮繁雜的關(guān)系數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)。

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

在本案例中,使用Hibernate框架構(gòu)建web應(yīng)用,開發(fā)人員可以采用面向?qū)ο蟮姆绞絹磉M(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.

主站蜘蛛池模板: 国产精品jizz在线观看软件| 欧美日韩成人| 国产精品漂亮美女在线观看| 91精品国产麻豆国产自产在线| 在线国产91| 久久精品亚洲热综合一区二区| 婷婷午夜影院| 自拍偷拍欧美| 亚洲中文在线视频| 精品无码人妻一区二区| 99在线视频精品| 久久青草免费91观看| 日韩不卡免费视频| 91午夜福利在线观看精品| 粉嫩国产白浆在线观看| 国产麻豆福利av在线播放| 在线欧美日韩| 乱系列中文字幕在线视频| 97se亚洲综合| 丁香亚洲综合五月天婷婷| 亚洲国产欧洲精品路线久久| 日本久久网站| 日日拍夜夜嗷嗷叫国产| 一区二区三区在线不卡免费| 黑人巨大精品欧美一区二区区| 国产精品黑色丝袜的老师| 国产色婷婷| 天堂成人av| 99视频在线免费| 欧美精品1区2区| 国产精品成人第一区| www.精品国产| 91口爆吞精国产对白第三集| 真实国产乱子伦视频| 国产手机在线ΑⅤ片无码观看| 国内精品久久久久鸭| 亚洲天堂啪啪| 亚洲中文制服丝袜欧美精品| 国产激情影院| 亚洲成aⅴ人在线观看| 国产一区成人| 国内精品伊人久久久久7777人| 一区二区午夜| 色哟哟国产精品| 精品天海翼一区二区| 国产成人亚洲精品蜜芽影院| 亚洲欧美综合另类图片小说区| 亚洲精品欧美重口| 高清精品美女在线播放| 成年人免费国产视频| 国产成年女人特黄特色大片免费| 亚洲国产亚洲综合在线尤物| 欧美成人a∨视频免费观看| 99久久精品免费看国产免费软件 | 最新日本中文字幕| 国产在线观看高清不卡| 欧美一区精品| 亚洲精品动漫在线观看| 久久国产精品麻豆系列| 亚洲欧美在线综合一区二区三区| 99激情网| 中文无码毛片又爽又刺激| 18禁影院亚洲专区| 国产精品精品视频| 人人爱天天做夜夜爽| 亚洲黄网在线| 99r在线精品视频在线播放| 伊人国产无码高清视频| 久久77777| 国产精品.com| 好吊色妇女免费视频免费| 看国产一级毛片| 成人一级黄色毛片| 欧美在线一二区| 国产麻豆91网在线看| 国产后式a一视频| 亚洲天堂日韩在线| 国内精品自在欧美一区| 国产综合精品一区二区| 亚洲色图欧美| 亚洲无码高清一区| 国产成人高清精品免费软件|