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

基于Spring和Hibernate數據訪問技術研究與應用

2011-02-09 01:57:52程顯生郭艷光
制造業自動化 2011年5期
關鍵詞:數據庫系統

程顯生,郭艷光

(內蒙古農業大學職業技術學院 信息管理系,包頭 014109)

0 引言

目前,在企業應用開發環境中,面向對象開發方法成為主流。數據持久化工作是不可或缺的部分,而且也是面向對象開發方法研究的主要方面。在應用程序開發中,三層體系結構模式能更靈活、更快速地開發強大的網絡應用程序系統。三層體系結構模式主要包括表示層、中間邏輯層和數據訪問層。表示層是提供給用戶的交互界面,便于客戶理解;中間邏輯層包括業務規則層、業務實體層和系統框架層。數據訪問層是定義、維護、訪問和更新數據,也稱該層為持久層。

在三層體系結構模式中,業務規則層是驗證業務實體是否對相應的數據有訪問權限,確保整個系統的底層安全。業務實體層是利用Spring 應用接口提供對各個業務實體進行數據訪問功能,相當于為數據庫的數據包裝了一層殼,增加數據庫訪問的統一性,提高整個系統的安全性。系統框架層是讀取和設置整個系統的配置信息,記錄和管理系統日志,提供統一的底層功能。數據訪問層是為業務層提供數據訪問功能,作為數據庫與業務層的接口,通過Hibernate的ORM元素,把對象持久化到關系數據庫中。

1 Spring和Hibernate技術原理及特點

1.1 Spring 容器框架

Spring是指一個用于構造Java應用程序的輕量級容器框架,它的核心基于“控制反轉(Inversion of Control,IoC)”原理。IoC是一種將組件依賴關系的創建和管理置于程序外部的技術,它有另一個含義更明確的名字稱“依賴注入(Dependency Injection,DI)”DI帶來的最大的好處一是消除連接應用程序的各個部件而編寫的大量代碼;二是將依賴配置外置并重新配置你的業務對象的依賴關系;三是提高可測試性,利用DI可以為數據訪問對象(Date Access Object,DAO)創建一個模擬實現,然后指導它傳遞給業務對象進行測試;四是DI中所有的主要組件都是定義為接口的,這些接口已在DI容器創建并糅合到一起,開發人員將精力集中建立業務邏輯,無需考慮業務的框架。

1.2 Hibernate對象持久化框架

Hibernate是“對象—關系映射(Object—Relational Mapping,ORM)模塊實現數據持久層的一個優秀的Java組件。ORM元素主要功能是實現實體域對象的持久化并封裝[7]數據訪問的細節。本文的黨員數據庫管理系統中主要通過DAO和ORM元素實現數據的持久化操作,如圖1所示。

圖1 通過DAO和ORM組件實現數據的持久化

DAO采用HibernateDaoSupport類開發。HibernateDaoSupport類提供相關的屬性和

方法并進行封裝。為此直接使用HibernateTemplate進行數據對象的訪問和操作。通過XML序列化和反序列化實現持久化數據對象的方法。XML序列化是將應用程序數據對象的公共屬性和字段轉換為XML文檔以便存儲或傳輸。反序列化則是從 XML 輸出中重新創建原始狀態的對象,最終將反序列化的數據對象轉換為應用程序數據。

2 數據庫管理系統的設計與開發過程

2.1 數據庫管理系統的設計

本文建立的某高校黨員信息管理系統,是選用SQL Server2005創建和管理數據庫,數據庫,數據庫中的表主要存放黨員信息的表memberINF,主要包括人員編號、姓名、性別、民族、出生日期、入黨時間、黨內職務、申請時間、培養時間、預審通過時間、支部大會通過時間等列名,該系統利用映射文件定義類和屬性,類和類屬性映射到數據庫的表和表字段,即通過映射來表示不同的表關聯。因此,Hibernate就可以持久化這些類和類屬性到數據庫中并通過Hibernate的HQL語言實現對數據庫數據的CRUD(Create/Read/Update/Delete)操作即實現對數據庫數據的增加、修改、刪除等編輯操作。

2.2 數據庫管理系統的開發過程

在黨員管理系統的開發過程中,采用基于.NET版本的Spring編寫數據訪問層配置文件Dao.xml,完成數據訪問層填充實體數據的序列化和接收客戶端數據實體,并提供給數據訪問層;采用基于.NET版本的Hibernate數據訪問層實現對實體定義,并完成Hibernate的最終數據實體化。同時,Hibernate數據訪問層主要通過Hibernate的映射文件完成數據庫表中數據相互轉化和持久化,最后完成數據的CRUD操作。下面以表memberINF為例,實現數據持久化的過程,具體過程如下:

1)Dao.xml文件的編寫

<!-- Database and NHibernate Configuration -->

<db:provider id="DbProvider"provider="SqlServer-3.0" connectionString="Data Source=.;Integrated Security=false;Data base=PermissionBase;User ID=PB_DB_USER;Password=1234567890"/>

<objectid="NHibernateSessionFa ctory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate12">

<property name="DbProvider"ref="DbProvider"/>

<property name="MappingAssemblies">

<list>

<value>Fire.GXDY.Dao.NHibernate</value>

</list>

</property>

<property name="HibernateProperties">

<dictionary>

<entry key="hibernate.connection.provider"

value="NHibernate.Connection.DriverConnectionProvider"/>

</property>

……

<object id="HibernateTransactionManager"

type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12">

<property name="DbProvider"ref="DbProvider"/>

<property name="SessionFactory" ref="NHibern ateSessionFactory"/>

</object>

<object id="HibernateTemplate" type="Spring.Data.NHibernate.HibernateTemplate">

<property name="SessionFactory"ref="NHibernateSessionFactory" />

<property name="TemplateFlushMode"value="Auto" />

<property name="CacheQueries" value="true" />

</object>

<!-- Data Access Objects -->

…..

<objectid="MemberINFDao" type="Fire.GXDY.Dao.NHibernate.HibernateMemberINFDao,Fire.GXDY.Dao.NHibernate">

<property name="HibernateTemplate"ref="HibernateTemplate"/>

</object>

</objects>

2)數據訪問對象DAO接口編寫

public interface IMemberINF

{

MemberINF FindById(string Id);

IList FindAll();

IList FindByDepartmnetId(string id);

MemberINF Save(MemberINF member);

MemberINF SaveOrUpdate(MemberINF member);

void Delete(MemberINF member);

}

3)數據實體的CURD操作編寫。

public MemberINF FindById(string Id)

{

HibernateTemplate.SessionFactory.EvictQueries("MemberINF");

HibernateTemplate.SessionFactory.Close();

HibernateTemplate.SessionFactory.OpenSession();

return HibernateTemplate.Load(typeof(MemberINF), Id) as MemberINF;

}

public IList FindAll()

{

HibernateTemplate.SessionFactory.EvictQueries("MemberINF");

HibernateTemplate.SessionFactory.Close();

HibernateTemplate.SessionFactory.OpenSession();

return HibernateTemplate.LoadAll(typeof(MemberINF));

}

……

public void Delete(MemberINF member)

{

HibernateTemplate.SessionFactory.EvictQueries("MemberINF");

HibernateTemplate.Delete(member);

}

4)映射文件的編寫

<hibernate-mapping xmlns="urn:nhibernatemapping-3.2" namespace="Fire.GXDY.Daomain"assembly="Fire.GXDY.Dao">

<class name="MemberINF" table="MemberINF"proxy="MemberINF">

<cache usage="read-write" />

<id name="Id" column="ID" type="String"length="15">

<generator class="assigned" />

</id>

<property name="Name" type="String">

<column name="Name" length="20" notnull="false"/>

</property>

<property name="Sex" type="String">

<column name="Sex" length="2" notnull="false"/>

</property>

<property name="Nation" type="String">

<column name="Nation" length="20" notnull="false"/>

</property>

……

5)實例注入編寫

public interface IMemberINFSrv

{

void DeleteMemberINF(string id);

System.Collections.IList GetAllMemberINF();

System.Collections.IList FindByDepartmnetId(string id);

Fire.GXDY.Daomain.MemberINF GetMemberINFById(string id);

string InsertMemberINF(Fire.GXDY.Daomain.MemberINF member);

string UpdateMemberINF(Fire.GXDY.Daomain.MemberINF member);

}

6)屬性和方法封裝并序列化給客戶端

public class MemberINFSrv:Fire.GXDY.Service.IMemberINFSrv

{

private IMemberINF memberINFDao;

public IMemberINF MemberINFDao

{

get { return memberINFDao; }

set { memberINFDao = value; }

}

……

public string InsertMemberINF(MemberINF member)

{

if (member != null)

{

MemberINF tempMember = MemberINFDao.FindById(member.Id);

if (tempMember != null&&tempMember.Id.Length>0) return "-2";

member.Id = IdGen.GetNextId(typeof(MemberINF));

member.Department = DepartmentDao.FindById(member.DepartmentId);

MemberINFDao.Save(member);

return "1";

}

return "-1";

}

3 結論

本文主要介紹了Spring和Hibernate技術的原理和特點并結合實際的實例,實現業務實體層、數據實體層、數據訪問層及映射文件的定義、維護等操作。利用Spring的依賴注入技術創建和定義數據訪問對象DAO和接口,實現業務邏輯的編寫,提供統一的數據訪問功能;利用Hibernate的對象關系映射ORM將數據對象與數據實體聯系,實現數據持久化操作。

Hibernate作為當今新興的、最受人矚目的數據庫訪問技術,提供了一種很好的數據持久層解決方案,使得開發人員真正從繁重的代碼編寫工作中解脫出來,極大地提高了開發效率和項目質量。Spring利用控制反轉、依賴注入特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。

[1] 張千,王華東.基于三層結構的船舶辦公自動化系統的設計梁鴻[J].微計算機應用,2006,6.

[2] 郭鋒.Spring 從入門到精通[M].北京:清華大學出版社,2007:230-260.

[2] 榮林.基于Hibernate性能優化研究[J].計算機工程與設計,2008,29(7):1739-1744.

[3] 陶勇.Hibernate ORM最佳實踐[M].北京:清華大學出版,2010:156-160.

[4] 嚴海.基于Struts Spring Hibernate框架構建WEB應用的設計與實現[D].西安科技大學,2010:10-84.

[5] 劉壯.基于Spring+Hibernate的開發方法研究及實例[D].吉林大學,2005:32-38.

[6] 宮曌.基于開源框架的CRM系統研究及開發[D].中南大學,2007:16-17.

[7] 高昂,衛文學.基于Hibernate與Struts框架的數據持久化應用研究[J].計算機應用,2005,25(12):2818-2819.

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产精品无码久久久久久| 色婷婷久久| 国产第一页屁屁影院| 亚洲第一色网站| 91热爆在线| 国产人人干| 午夜综合网| 免费看黄片一区二区三区| 91蜜芽尤物福利在线观看| 日本成人不卡视频| 国产精品福利导航| 丰满人妻久久中文字幕| 国产伦精品一区二区三区视频优播| 色综合热无码热国产| a毛片在线播放| 国产麻豆精品手机在线观看| 国产成人无码AV在线播放动漫| 亚洲三级电影在线播放| 亚洲综合色吧| 国产亚洲美日韩AV中文字幕无码成人| 亚洲欧洲日产国产无码AV| 亚洲天堂精品在线| 欧美一级高清视频在线播放| 欧美国产综合视频| 国产91在线免费视频| 真实国产精品vr专区| 欧美精品亚洲精品日韩专区va| 一区二区三区在线不卡免费| 最新亚洲人成无码网站欣赏网| 日韩精品欧美国产在线| 亚洲无码高清免费视频亚洲| 亚洲综合一区国产精品| 午夜天堂视频| 亚洲欧洲日韩国产综合在线二区| 日韩在线1| 强奷白丝美女在线观看| 国产办公室秘书无码精品| 国产精品熟女亚洲AV麻豆| 污网站在线观看视频| 欧美无专区| 成人午夜精品一级毛片| 在线播放精品一区二区啪视频| 在线观看免费AV网| 久久精品亚洲热综合一区二区| 亚洲精品免费网站| 中文字幕色在线| 四虎成人精品在永久免费| 99偷拍视频精品一区二区| 97免费在线观看视频| a级毛片在线免费观看| 少妇露出福利视频| 亚洲娇小与黑人巨大交| 免费A∨中文乱码专区| 玖玖免费视频在线观看| 亚洲成人福利网站| 久久鸭综合久久国产| 久久午夜影院| 青青草原国产免费av观看| 色婷婷在线播放| 99伊人精品| 在线观看免费黄色网址| 国产精品三级专区| 91小视频版在线观看www| 久久精品aⅴ无码中文字幕| 午夜限制老子影院888| 国产精品福利在线观看无码卡| 欧美高清国产| 成人福利在线观看| 国产精品免费久久久久影院无码| 国产女人18水真多毛片18精品| 在线观看亚洲天堂| 不卡视频国产| 亚洲乱强伦| 久久77777| 国产在线拍偷自揄拍精品| 国产男女免费视频| 麻豆国产精品一二三在线观看| 亚洲成人网在线观看| 91麻豆久久久| 国产91麻豆视频| 亚洲成a∧人片在线观看无码| 亚洲精品图区|