亚洲免费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

        国产亚洲一区二区在线观看| 国产精品国产午夜免费看福利| 成人av在线免费播放| 色婷婷久久亚洲综合看片| 爆乳熟妇一区二区三区霸乳| 久久精品国产亚洲av瑜伽| 亚洲日本人妻中文字幕| av成人一区二区三区| 日本做受120秒免费视频| 国产av无码专区亚洲av手机麻豆| 欧美一级视频在线| 国产精品毛片极品久久| 天天碰免费上传视频| 岛国av无码免费无禁网站下载| 日本精品一区二区在线看| 国产精品亚洲一级av第二区| 日韩av无码精品一二三区| 亚洲精品老司机在线观看| 抖射在线免费观看视频网站| 亚洲国产中文字幕在线视频综合 | 狠狠躁狠狠躁东京热无码专区| 国产一区二区三区涩涩涩| 中文字幕一区二区三区视频| 性一交一乱一透一a级| 伊人婷婷色香五月综合缴激情| 青青草免费观看视频免费| 国产在线精品一区二区三区| 国产一区二区三区av在线无码观看 | 精品无码人妻一区二区三区品| 欧美日韩中文亚洲另类春色| 国产三级av在线精品| 亚洲国产美女精品久久久久∴| 色94色欧美sute亚洲线路二| 国产精品一区区三区六区t区| 国产在线一区二区三区四区不卡| 天堂国精产品2023年| 最新国产精品亚洲二区| 亚洲成人av大片在线观看| 国产成人av综合色| 亚洲人免费| 精品蜜臀国产av一区二区|