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

基于Hibernate的對象關系映射研究

2016-09-12 08:02:32張少應程傳旭
電子設計工程 2016年6期
關鍵詞:關聯數據庫

張少應,程傳旭

(西安航空學院 計算機工程系,陜西 西安 710077)

基于Hibernate的對象關系映射研究

張少應,程傳旭

(西安航空學院 計算機工程系,陜西 西安 710077)

對象關系映射解決了面向對象程序設計語言與關系數據庫存在的互不匹配問題?;趯ο箨P系映射的持久化框架實現了業務邏輯與數據訪問的分離,簡化了數據庫訪問,降低了應用開發難度。本文分析了基于Hibernate框架的兩種對象關系映射策略,并比較了三種繼承映射策略的優缺點,設計了一種基于Hibernate的ORM持久化層的系統架構,該架構結構清晰、開發效率高,具有較高的應用價值。

對象關系映射持久化層繼承關系關聯關系

在日常開發中,關系數據庫表與表之間都存在關聯關系,通常使用主鍵和外鍵來實現,以此減少數據庫中數據的冗余、提高數據訪問效率、保證數據庫實體的完整性和一致性。Hibernate框架是一個開源的對象關系映射框架,是輕量級JavaEE應用的持久層解決方案,不僅管理Java類到關系數據庫表之間的映射,還提供了數據查詢、數據緩存等功能,大幅縮短了使用JDBC處理數據持久化的時間。對象關系映射(Object/Relation Mapping,ORM)是為解決面向對象與關系數據庫存在互不匹配問題的技術,通過ORM映射,使得開發人員能更好使用面向對象程序設計語言的易用性,以及關系數據庫的優勢,提高應用程序的開發效率,實現關系數據庫存放數據的完整和一致。

基于Hibernate框架的對象關系映射的主要任務是實現數據庫關系表與持久化類之間的映射,簡化了持久化層數據的訪問。開發人員使用面向對象程序設計的方法,以對象為基礎,通過操作對象,完成關系數據庫的訪問。本文分析了基于Hibernate框架的兩種對象關系映射策略,比較了3種繼承映射策略的優缺點;結合軟件分層設計理念,設計了一種基于Hibernate的ORM持久層的系統架構,該持久層專注于數據庫交互進行數據的持久化工作,提供一個標準的接口供業務邏輯層調用。該架構具有結構清晰、開發效率高等優點,具有較強現實應用價值。

1 基于Hibernate的對象關系映射策略

對象關系映射大致可以分為繼承關系映射和關聯關系映射[1]。在關系數據庫中,通過主外鍵將數據庫表關聯起來,而Hibernate框架[2-3]的關聯關系映射將簡化了持久化層數據訪問的優勢,在實現機制上要比關系數據庫復雜的多。根據關聯的方向和數量的不同,關聯關系的映射也不同。按照關聯的方向可分為單向關聯和雙向關聯;依據關聯數量的不同,關聯關系可分為一對一(1-1)、一對多(1-N)、多對一(N-1)以及多對多(N-N)。

1.1關聯關系映射

在基于Hibernate框架的關聯映射實現過程中(如圖1),基于XML的ORM映射文件充當了關系數據庫與POJO (Plain Old Java Object,POJO)類文件之間的橋梁角色,使用這種具有開放標準、便捷數據處理特點的文件,實現了關系數據庫與POJO類文件之間的關聯,以此簡化了持久化層數據訪問。在ORM映射文件中,不僅完成了關系數據庫表與POJO類之間的基本映射信息(表名與類名、id、字段與類屬性之間的映射),而且使用特定的元素 (<many-to-one>、<oneto-one>、<many-to-many>等)實現了基于主鍵、基于唯一外鍵的1-1、N-N關聯關系,或者基于連接表的1-N、N-1關聯關系。所有ORM映射文件在Hibernate的配置文件hibernate. cfg.xml注冊后,才能被Hibernate框架加載,結合持久化類完成了Hibernate框架的映射機制。

持久化類是持久化層數據訪問中至關重要的角色,用來映射關系數據庫中的表,Hibernate框架才能以對象的視角操作數據庫。Hibernate框架采用低侵入式設計,不要求持久化類繼承任何父類或接口,直接采用POJO作為PO(Persistant Object,PO)[4]。而POJO文件不僅為持久化的每個屬性提供了getter和setter方法,在持久化類中也提供一個同數據庫表的主鍵對應的標識屬性;同時也提供了無參構造方法,為Hibernate框架創建持久化類的實例提供了便利。在POJO文件中,通過在某一個實體類文件中聲明與另一個實體類對象的屬性,或者創建與當前對象關聯的集合實例,實現了實體對象之間的關聯關系。

圖1 基于主鍵的1-1關聯映射策略

1.2繼承關系映射

繼承關系是面向對象程序設計的主要特征,是關系型數據與面向對象數據結構之間的主要差異之一。在關系數據庫中無法直接實現對象間的繼承關系,文獻[6]中提出了基于關系數據庫的管理信息系統中繼承關系實現機制,同框架結構的實現方法相比,該方法實現機制比較復雜。Hibernate框架實現繼承關系映射通常使用以下3種策略。

1)當主表與父類對應,從表分別對應子類時,采用TPS (Table Per SubClass,TPS)映射策略。使用TPS實現繼承關系映射的基本方法是父類和每個子類都對應一張表 (如圖2),子類和父類之間使用數據庫表的主鍵來設置它們的關聯關系;父類實例存放在父類表,而子類實例則由父類表和子類表共同存儲?;谠摲N設計,主表和從表的映射信息都存放在與父類同名的配置文件中,通過<joined-subclass>元素實現子類及對應從表之間的映射信息,指定子類的名字、子類對應的表名、子類的主鍵以及屬性,完成子類映射關系的配置。使用TPS策略,開發人員能夠完全使用面向對象思想,實現對PO文件的使用;從表中除主、外鍵的其他字段,可以采用非空約束。但該策略在查詢子類實例數據時,需要跨表查詢,降低了數據處理的性能。

圖2 基于TPS的繼承關系映射策略

2)整個繼承關系中的實例都存放在同一個表中,使用標識字段區分不同的對象實例,采用TPH (Table Per Class Hierarchy,TPH)映射策略。基于這種設計,子類和父類的映射信息都可以存放在父類對應的映射文件中,使用<subclass>元素配置每個子類擴展的獨有屬性,指定子類的名字、子類的具體區分值以及屬性;使用discriminator元素映射標識字段,將表的區分字段配置成區分值。使用該方法最大的優點就是簡單、執行效率高,所有數據存放在一張表中,無論進行何種查詢,底層數據庫只需在一張表中查詢,無需進行多表連接查詢或者union查詢;數據的存取通過操作各自的類實例完成。缺點在于存在冗余字段,每次在類層次的任何地方添加一個新屬性時都必須將該屬性添加到這張表中,所有子類定義的字段,都不能有非空的限制,如果有太多的非空限制時,將使得父類的實例在這些列沒有值存在,產生了數據完整性沖突,導致父類無法存放在數據庫中。

3)實體類層次上采用繼承關系,每個具體類使用一個數據實體,在該實體中不僅包含屬性也包含繼承的父類成員屬性,采用TPC(Table Per Concrete Class,TPC)映射策略?;谶@種設計,父類實例的數據保存在主表中,子類實例的數據保存在子表中,每個子類對應一個具體的表,子類表之間沒有關聯關系。在該映射策略中,由于子類表中的字段等于父類屬性加子類屬性之和,因此子類表中的字段比父類表中的字段多。在父類對應的映射文件中,使用<union-subclass>元素指定子類的名字、子類對應的表名以及屬性,完成子類擴展屬性的配置。TPC映射策略的優點在于數據結構清晰,子類的成員屬性映射的字段可以不受非空約束。該策略缺點在于子表的主鍵屬性不允許重復;由于同一繼承層次中所有實體類必須使用同一主鍵種子,因此不能使用數據庫的自增方式生成主鍵;父類的屬性出現在多張表中,出現數據冗余。

2 基于Hibernate的ORM持久層的設計

軟件分層設計具有擴展性強、維護方便、組件重用性高等優點,有利于軟件開發的標準化,也便于對整個開發過程的管理,因此被越來越多的開發者使用。基于Hibernate的ORM持久層[7]就是在三層架構的基礎上,將持久化層從業務邏輯層中分離出來,使其位于數據庫層與業務邏輯層之間,形成了目前比較流行的基于JavaEE的多層軟件架構 (如圖3)。使用多層軟件架構,層次分明,分工明確且相對獨立,實現了功能層中業務邏輯和數據邏輯之間的松耦合關系[5],同時也降低了開發成本和開發風險,提高了數據的安全性能。目前基于Struts2.x、Spring和Hibernate框架集成的開發方式,采用面向接口編程的思想,具有良好的分層結構設計,以及開發效率高、通用性好等優點,是企業級基于JavaEE應用開發的首選。而基于Hibernate的對象關系映射技術,本身就是用于簡化持久化層數據的訪問,該技術在分層設計中的使用,縮短了開發周期,降低了開發難度。

在持久層實現中,DAO層完成連接數據庫的增加、刪除、修改等實現細節。而Hibernate框架通過ORM映射文件完成關系數據庫與POJO類文件之間的關聯,結合DAO層實現了底層數據訪問操作與業務邏輯的分離,對業務邏輯提供了各類面向對象的數據訪問接口,業務邏輯層通過調用DAO接口實現了整個業務方法。

圖3 基于SSH2管理信息系統架構

3 結束語

對象關系映射使得關系數據庫與對象之間的轉換更加透明,開發人員無需關心數據庫連接、并發和事務等特性;也改變了以往使用SQL語句進行查詢的麻煩,使開發人員完全使用面向對象的思想編程,完全使用面向對象的角度進行關聯查詢操作。Hibernate框架是目前比較成熟的ORM框架,是對JDBC輕量級封裝,實現了用面向對象的方式來操作關系數據庫。文中分析了基于Hibernate框架的ORM實現策略,結合Struts2.x、Spring和Hibernate三框架集成開發方式,研究了一種基于Hibernate的ORM持久化層的系統架構,該架構利用分層結構的設計思想,利用持久化層實現了業務邏輯層與數據層的分離,降低了開發難度,該架構層次分明,分工明確,在軟件開發中具有較強的應用價值。

[1]丁昊志.對象關系映射模型研究[D].北京:華北電力大學,2006.

[2]The Hibernate Team,TheJBossVisualDesignTeam. HIBERNATE-Relational Persistence for Idiomatic Java[EB/ OL].2015.http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/

[3]唐振明.JavaEE主流開源框架[M].北京:電子工業出版社,2011.

[4]李剛.輕量級JavaEE企業應用實戰[M].4版.北京:電子工業出版社,2014.

[5]劉德山,楊彬彬.基于Hibernate框架的數據持久層架構設計及應用[J].微型機與應用,2011,30(15):12-14.

[6]張云濤,龔玲,周伯鑫.基于關系數據庫管理系統的繼承機制[J].計算機工程,1997(23):42-44

[7]Ming Xue,Changjun Zhu.Design and Implementation of the Hibernate Persistence Layer Data Report System Based on J2EE[C]//2009Pacific-AsiaConferenceonCircuits,Communications and Systems,2009.

Research of object-relational mapping based on hibernate

ZHANG Shao-ying,CHENG Chuan-xu
(The Department of Computer Engineering,Xi'an Aeronautical University,Xi'an 710077,China)

Object relational mapping solves the matching problem of the object-oriented programming language and the relational database.Persistence framework based on object relational mapping realizes the separation of business logic and

data access,simplifies the database access,reduces the difficulty of application development.This paper analyzes the two

kinds of object relational mapping strategy based on Hibernate framework,and compares the advantages and disadvantages of three kinds of inheritance mapping strategy,designs a system architecture based on Hibernate ORM persistence layer.The architecture structure have many advantages of clear framework,high efficiency and higher application value.

inherited relationship;incidence relation;persistence layer;object/relation mapping

TP311

A

1674-6236(2016)06-0128-03

2015-05-18稿件編號:201505147

陜西省教育廳自然科學項目(12JK0951);西安航空學院2014年度校級高等教育教學改革研究項目(2014Z010)

張少應(1976—),男,陜西咸陽人,碩士,講師。研究方向:管理信息系統。

猜你喜歡
關聯數據庫
不懼于新,不困于形——一道函數“關聯”題的剖析與拓展
“苦”的關聯
當代陜西(2021年17期)2021-11-06 03:21:36
“一帶一路”遞進,關聯民生更緊
當代陜西(2019年15期)2019-09-02 01:52:00
奇趣搭配
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
智趣
讀者(2017年5期)2017-02-15 18:04:18
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 国产99精品久久| 欧美a级在线| 伊人网址在线| 色噜噜中文网| 国产微拍一区二区三区四区| 亚洲日韩图片专区第1页| av在线人妻熟妇| 为你提供最新久久精品久久综合| 国产午夜小视频| 日本国产在线| 91久久国产综合精品| 成人在线不卡视频| 亚洲欧美国产五月天综合| 久久久亚洲色| 亚洲欧美不卡中文字幕| 毛片免费高清免费| 91久久精品日日躁夜夜躁欧美| 亚洲国产高清精品线久久| 国产麻豆91网在线看| 亚洲国产综合自在线另类| 色悠久久综合| 成年人视频一区二区| 国产人人乐人人爱| 日韩精品亚洲精品第一页| 日韩欧美成人高清在线观看| 亚洲精品无码专区在线观看| 亚洲色图狠狠干| 蜜桃视频一区二区| 久久大香伊蕉在人线观看热2| 午夜视频在线观看区二区| 精品久久综合1区2区3区激情| 亚洲手机在线| 国产精品一区在线麻豆| 久草视频福利在线观看 | 日韩A级毛片一区二区三区| 色播五月婷婷| 精品视频第一页| 亚洲中文字幕手机在线第一页| 看看一级毛片| 一级毛片在线免费视频| 国模极品一区二区三区| 国产精品大白天新婚身材| 中国精品自拍| 久久久久无码国产精品不卡| 朝桐光一区二区| 国产区精品高清在线观看| 欧美亚洲日韩中文| 视频一本大道香蕉久在线播放 | 欧美精品高清| 亚洲色图综合在线| 日韩av无码DVD| 真人高潮娇喘嗯啊在线观看 | 午夜天堂视频| 国产日韩欧美在线播放| 中文字幕丝袜一区二区| 曰AV在线无码| 国产成人91精品免费网址在线| 成人免费网站久久久| 国产毛片基地| 国产一区在线观看无码| 国产浮力第一页永久地址| 999福利激情视频| 国产aⅴ无码专区亚洲av综合网 | 国产成人无码AV在线播放动漫| 国产成人精品免费视频大全五级| 一本色道久久88综合日韩精品| 国产精品久久久久无码网站| 99久久成人国产精品免费| 97在线碰| 久久福利片| 青青草原国产| 91无码视频在线观看| 日本福利视频网站| 毛片三级在线观看| 成人韩免费网站| 国产免费高清无需播放器| 国产不卡一级毛片视频| 国产欧美高清| 日本国产精品| 欧美一级专区免费大片| 欧美一级在线播放| 99久久免费精品特色大片|