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

?

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

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

向大芳

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

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

中圖分類號:TP311.13? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? ?文章編號: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)性國有企業(yè)中,隨著生產(chǎn)規(guī)模的日益擴大,生產(chǎn)的產(chǎn)品的種類也不得增加,這導致生產(chǎn)管理的范圍日益擴大,涉及的業(yè)務邏輯亦日益復雜,多工段或工種或車間之間的工作協(xié)同也更加困難。在信息化時代,這些企業(yè)不得不使用信息化技術和方法來推動和改進過去傳統(tǒng)的生產(chǎn)管理流程。其中基于BS架構的Web應用程序以開發(fā)周期短、可維護性強、輕量級、免安裝、強大的用戶體驗、完美的交互等特點,在各行各業(yè)嶄露頭角,開始扮演重要角色[1-2]。

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

1? Hibernate技術分析

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

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

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

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

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

4? 領域對象層的設計

領域對象(Domain Object)本質(zhì)上就是實體類,它描述了系統(tǒng)業(yè)務邏輯的各類狀態(tài),作用于表現(xiàn)層、業(yè)務層和持久層并被持久化到數(shù)據(jù)庫中。使用hibernate框架可以方便快捷的利用領域對象層以面向對象的方式對數(shù)據(jù)庫表進行增、刪、改、查操作。領域對象本身并不等同于數(shù)據(jù)庫中的表,但就大多數(shù)應用系統(tǒng)來說,一個領域對象往往都映射為數(shù)據(jù)庫中對應的二維表。本系統(tǒng)領域對象層的類如表1所示,類中為每個屬性(成員變量)提供了getter和setter方法。

5? 領域對象的持久化實現(xiàn)

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

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

映射文件中的class標簽完成了對持久化類的配置,但此時仍無法操作數(shù)據(jù)庫,Hibernate需要連接數(shù)據(jù)庫的相關信息,比如:數(shù)據(jù)庫url、驅動、登陸用戶名和密碼等。Hibernate框架使用名為hibernate.cfg.xml的配置文件來配置這些信息。配置文件的結構如下:

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

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

6? 結語

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

參考文獻

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

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

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

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

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

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

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

鄄城县| 德钦县| 灌云县| 永泰县| 通化县| 富阳市| 凤冈县| 山西省| 新宁县| 渭源县| 滕州市| 天峨县| 东安县| 贵州省| 得荣县| 塔城市| 石屏县| 西乡县| 特克斯县| 社会| 兴仁县| 邹城市| 逊克县| 哈尔滨市| 收藏| 永宁县| 海口市| 桐城市| 阿拉尔市| 焦作市| 任丘市| 荣成市| 漾濞| 蚌埠市| 靖远县| 闽侯县| 临朐县| 绍兴县| 临猗县| 玉龙| 河东区|