亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Hibernate一對(duì)多雙向關(guān)聯(lián)映射在駕校管理系統(tǒng)中的應(yīng)用

        2014-04-29 00:00:00黃昊馬杰

        摘 要:本文討論了Hibernate一對(duì)多關(guān)聯(lián)映射是三種形式,即一對(duì)多單向關(guān)聯(lián)、多對(duì)一單向關(guān)聯(lián)和一對(duì)多雙向關(guān)聯(lián)映射,介紹了一對(duì)多雙向關(guān)聯(lián)的作用和實(shí)現(xiàn)原理,并基于駕校管理系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)現(xiàn)了一對(duì)多雙向關(guān)聯(lián)的一個(gè)應(yīng)用。

        關(guān)鍵詞:Hibernate;一對(duì)多關(guān)聯(lián)映射;雙向關(guān)聯(lián);駕校管理系統(tǒng)

        中圖分類號(hào):TP311.52

        Hibernate是一個(gè)基于Java的開放源代碼持久化中間件,它對(duì)JDBC做了輕量級(jí)封裝,能夠提供ORM映射服務(wù)、數(shù)據(jù)查詢和數(shù)據(jù)緩存等功能。Hibernate作用于DAO層,“對(duì)象—關(guān)系”映射讓開發(fā)人員可以方便地使用面向?qū)ο笏枷雭磉M(jìn)行數(shù)據(jù)庫(kù)操作,以節(jié)省對(duì)象持久化相關(guān)的大量JDBC編程工作量。輕量級(jí)的封裝避免了過多復(fù)雜的功能,減輕了程序員的負(fù)擔(dān)。Hibernate開放源代碼并提供了詳細(xì)的API,也為開發(fā)人員帶來的應(yīng)用和擴(kuò)張的極大便利。這些性能使得Hibernate成為應(yīng)用最廣泛的Java數(shù)據(jù)持久化框架。

        1 一對(duì)多雙向關(guān)聯(lián)映射實(shí)現(xiàn)原理

        1.1 Hibernate映射。映射是Hibernate的一個(gè)重要功能,它能夠在對(duì)象模型和關(guān)系模型之間轉(zhuǎn)換,開發(fā)人員可以使用對(duì)象模型來操作數(shù)據(jù)。Hibernate映射基于XML,具有較好的易讀性和維護(hù)性。對(duì)于數(shù)據(jù)庫(kù)實(shí)體的一對(duì)一、一對(duì)多、多對(duì)多三種關(guān)系,Hibernate分別提供了對(duì)應(yīng)的映射實(shí)現(xiàn)。

        1.2 一對(duì)多關(guān)聯(lián)映射。一對(duì)多關(guān)聯(lián)是最為常見的關(guān)聯(lián)關(guān)系,Hibernate實(shí)現(xiàn)了一對(duì)多關(guān)聯(lián)映射和多對(duì)一關(guān)聯(lián)映射。一對(duì)多關(guān)聯(lián)映射,以數(shù)據(jù)表“一”的一方來進(jìn)行映射,關(guān)系由“一”的一端來維護(hù),在“一”方的“*.hbp.xml”中添加“多”方的實(shí)體類集合對(duì)象,并在“一”的實(shí)體類中根據(jù)XML映射添加“多”方的對(duì)象集合來完成映射。

        1.3 一對(duì)多雙向關(guān)聯(lián)映射。一對(duì)多的雙向關(guān)聯(lián)就是在“一”和“多”兩端同時(shí)維護(hù)映射關(guān)系,使得任意一端都可以關(guān)聯(lián)到另一端,從“一”的一端可以得到“多”的一端的對(duì)象集,從“多”的一端也可以得到“一”的一端對(duì)應(yīng)的對(duì)象,實(shí)現(xiàn)互相級(jí)聯(lián),為程序提高更靈活有效的查詢方式。其實(shí)現(xiàn)原理是:在“多”方的“*.hbp.xml”配置文件中,通過元素與“一”方的實(shí)體類建立關(guān)聯(lián),并在“多”方的實(shí)體類中添加“一”方的實(shí)體類對(duì)象作為成員變量;在“一”方的“*.hbp.xml”配置文件中,通過在集合中用元素添加“多”方實(shí)體類的集合,并設(shè)置inverse屬性,使得關(guān)聯(lián)關(guān)系反轉(zhuǎn)到“多”的一方,由“多”的一方維護(hù),這樣可以有效避免產(chǎn)生多余的數(shù)據(jù)操作語句。同時(shí),在“一”方的實(shí)體類中添加“多”方的實(shí)體類集合對(duì)象作為成員變量。在這個(gè)過程中,雙方的關(guān)聯(lián)關(guān)系通過“多”方表的外鍵來建立。

        2 一對(duì)多雙向關(guān)聯(lián)映射實(shí)現(xiàn)

        2.1 駕校管理系統(tǒng)簡(jiǎn)介。當(dāng)前,中國(guó)已經(jīng)成為全球第一的汽車消費(fèi)市場(chǎng),傳統(tǒng)駕校的粗放式人工管理方式難以適應(yīng)市場(chǎng)的需求和發(fā)展。這使得息化的駕校管理平臺(tái)具有了好的市場(chǎng)前景。通過駕校管理系統(tǒng),學(xué)員可以查詢駕校的基本信息,如場(chǎng)地位置、設(shè)施配備、收費(fèi)情況、社會(huì)評(píng)價(jià)等,學(xué)員可以查看教練信息,如教練的基本情況、指導(dǎo)車型、通過率等,通過了解這些信息然后在線咨詢和報(bào)名,并能夠預(yù)約教練、查看自己的學(xué)習(xí)進(jìn)度和管理考試科目;教練可以查詢所屬學(xué)員的信息、安排學(xué)員的考試科目、與學(xué)員進(jìn)行在線交流、安排預(yù)約等;駕校管理員可以對(duì)教練、學(xué)生信息進(jìn)行管理,可以發(fā)布通知公告,并對(duì)教練學(xué)員安排情況進(jìn)行調(diào)度。

        2.2 駕校管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)。在駕校管理系統(tǒng)中,主要的實(shí)體對(duì)象有學(xué)員、教練、駕校、駕校管理員等,它們部分E-R圖設(shè)計(jì)如下:

        圖1

        在數(shù)據(jù)庫(kù)設(shè)計(jì)中可以看出,學(xué)員與教練、教練與駕校都形成了一對(duì)多的關(guān)系,而且在用戶使用時(shí),都是需要學(xué)員到教練、教練到學(xué)員這種雙向的查詢,如果基于一對(duì)多的單向映射,那么DAO層將無法滿足反向的查詢需要,如果在一對(duì)多單向映射的基礎(chǔ)上添加反向的多對(duì)一單向映射,代碼量會(huì)加倍,業(yè)務(wù)關(guān)系也變得比較繁瑣。因此,選擇一對(duì)多的雙向關(guān)聯(lián)映射是解決這類問題的有效途徑。

        2.3 一對(duì)多雙向關(guān)聯(lián)映射的實(shí)現(xiàn)。本文以學(xué)員和教練的雙向關(guān)聯(lián)映射來描述實(shí)現(xiàn)過程。首先,定義學(xué)員類Student.java,在學(xué)員類中添加教練coach對(duì)象,代碼結(jié)構(gòu)如下:

        public class Student {

        private String ID;

        private String studentName;

        private String studentSex;

        private int studentAge;

        private String studentIdentity;

        //此處省略其他成員變量聲明

        private Coach coach;

        //此處省略get/set方法

        }

        然后,創(chuàng)建Student.hbm.xml文件,在學(xué)員方即“多”方通過元素配置與教練方即“一”方的關(guān)聯(lián):

        <!--省略其他屬性聲明-->

        <!-- coachID 為外鍵-->

        接著,定義教練實(shí)體類Coach.java,在教練方即“一”方添加 “多”方的集合Set對(duì)象,代碼結(jié)構(gòu)如下:

        public class Coach {

        private int ID;

        private String coachName;

        private String coachSex;

        private int coachType;

        private String coachState;

        //此處省略其他成員變量聲明

        private Set students = new HashSet(0);

        //此處省略get/set方法

        }

        最后,在Coach.hbm.xmlX文件中通過元素配置與學(xué)員方即“一”方的關(guān)聯(lián):

        <!—省略其他屬性聲明-->

        <!--外鍵-->

        其中,inverse屬性使得關(guān)聯(lián)關(guān)系反轉(zhuǎn)到學(xué)員一方,由學(xué)員方維護(hù)連接關(guān)系,這樣在數(shù)據(jù)庫(kù)操作中,可以減少冗余查詢。在完成以上配置之后,可以根據(jù)業(yè)務(wù)需要?jiǎng)?chuàng)建DAO類,完成數(shù)據(jù)的基本操作。

        3 結(jié)束語

        一對(duì)多關(guān)聯(lián)是數(shù)據(jù)庫(kù)設(shè)計(jì)中最常見的一種關(guān)聯(lián)關(guān)系,通過Hibernate一對(duì)多雙向關(guān)聯(lián)映射,可以使得查詢更加靈活、代碼數(shù)量減少,業(yè)務(wù)邏輯也更清晰,在實(shí)際應(yīng)用開發(fā)中,可以根據(jù)業(yè)務(wù)需要,有效地使用Hibernate一對(duì)多雙向關(guān)聯(lián),提高項(xiàng)目開發(fā)效率和質(zhì)量。

        參考文獻(xiàn):

        [1]陳正舉.基于HIBERNATE的數(shù)據(jù)庫(kù)訪問優(yōu)化[J].計(jì)算機(jī)應(yīng)用與軟件,2012(29):144-149.

        [2]李杰.基于ORM的輕量級(jí)數(shù)據(jù)持久化技術(shù)研究及應(yīng)用[J].計(jì)算機(jī)科學(xué),2010(37):190-193.

        [3]趙廣利.基于NHibernate的數(shù)據(jù)持久化方案[J].計(jì)算機(jī)工程,2009(35):53-55.

        [4]宮生文,王寧.Hibernate作為J2EE數(shù)據(jù)持久層的分析和研究[J].計(jì)算機(jī)與信息技術(shù),2006(04):40-42.

        [5]陶勇.Hibernate ORM最佳實(shí)踐[M].北京:清華大學(xué)出版,2010.

        作者簡(jiǎn)介:黃昊(1979-),男,陜西安康人,講師,繼續(xù)教育部副主任,碩士,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、軟件開發(fā);馬杰(1980.06-),陜西漢中人,副教授,就職于教務(wù)處,碩士,研究方向:軟件開發(fā)。

        作者單位:海南軟件職業(yè)技術(shù)學(xué)院,海南瓊海 571400

        久久狠狠髙潮曰十八女人| 亚洲国色天香卡2卡3卡4| 久久精品免费中文字幕| 中文字幕日韩三级片| 日韩av无码中文无码电影| 天天躁日日躁狠狠躁av| 无遮挡十八禁在线视频国产制服网站| 成人片99久久精品国产桃花岛| 久久av一区二区三区下| 日本女优久久精品久久| 亚洲成在人线视av| 精品免费国产一区二区三区四区| 国产成人精品一区二区三区视频| 亚洲av无码国产精品色午夜洪| 全免费a级毛片免费看视频| 日本一区二区三本视频在线观看| 成人国产av精品麻豆网址| 亚洲精品国产电影| 女人被狂c躁到高潮视频| 亚洲片一区二区三区| 亚洲av高清资源在线观看三区| 色婷婷一区二区三区四| 亚洲中文字幕剧情类别| 亚洲精品国产精品乱码在线观看| 中文字幕人妻熟女人妻| 全免费a级毛片免费看网站| 国产日韩精品一区二区在线观看播放| 91精品国产综合久久久蜜臀九色| 日韩三级一区二区不卡| 国产啪亚洲国产精品无码| 区二区欧美性插b在线视频网站| 久久亚洲国产成人亚| 丝袜美女美腿一区二区| 国产实拍日韩精品av在线| 亚洲一区自拍高清亚洲精品| 亚洲暴爽av人人爽日日碰| 亚洲综合色婷婷七月丁香| 亚洲一区二区三区av资源| 99久久99久久精品免费看蜜桃| 又黄又爽又色的视频| 亚洲一级电影在线观看|