如何進(jìn)行Spring和Hibernate的集成

如何進(jìn)行Spring和Hibernate的集成,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出北安免費(fèi)做網(wǎng)站回饋大家。

1.介紹

最近我參與了北美一家銀行的審計(jì)系統(tǒng)的后臺(tái)軟件設(shè)計(jì)和開(kāi)發(fā)工作,除了使用Web Service以外,我們集成了Spring和Hibernate,通過(guò)Spring的HibernateTemplate實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的存取。眾所周知Hibernate是一種廣泛應(yīng)用的一種強(qiáng)大的數(shù)據(jù)持久層技術(shù), 另一方面Spring作為支持IOC的依賴注入框架,其優(yōu)點(diǎn)是能夠非常好地集成大多數(shù)主流技術(shù)。 本文我們將討論如何集成 Spring 和Hibernate.

2.Spring和Hibernate基礎(chǔ)

在我們實(shí)際進(jìn)入集成這兩個(gè)技術(shù)之前,讓我們理解這種集成需求,大家都知道Hibernate是一種位于應(yīng)用和數(shù)據(jù)庫(kù)之間的強(qiáng)大的ORM 工具。 它可使應(yīng)用以獨(dú)立平臺(tái)的方式從各種數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù),對(duì)應(yīng)用來(lái)說(shuō)沒(méi)有必要依賴于低級(jí)DBC 細(xì)節(jié)如管理連接, 處理statements 和result sets. 所有訪問(wèn)特定數(shù)據(jù)源的細(xì)節(jié)很容易在Xml文件中配置,另一個(gè)好處是Hibernate和J2SE和J2EE應(yīng)用兼容得很好。

使用Hibernate 問(wèn)題之一是使用Hibernate Framework訪問(wèn)數(shù)據(jù)庫(kù)的客戶應(yīng)用必須依賴Hibernate APIs如Configuration, SessionFactory and Session. 這些個(gè)對(duì)象在應(yīng)用代碼中持續(xù)擴(kuò)散。而且應(yīng)用代碼必須用手工維護(hù)和管理這些對(duì)象。但是在Spring的環(huán)境,業(yè)務(wù)對(duì)象通過(guò)IOC的幫助下是能夠通過(guò)配置完成的,簡(jiǎn)單地說(shuō),一個(gè)對(duì)象狀態(tài)能夠從應(yīng)用代碼中分離。意思是現(xiàn)在使用Hibernate 對(duì)象作為Spring Beans是可能的,他們能夠得到Spring提供的所有方便。

3.集成Sample

我們沒(méi)有打算研究Spring包里集成的各種API,我們想通過(guò)實(shí)例源碼來(lái)學(xué)習(xí)和理解這些APIs. 下列部分包括了集成Spring-Hiberante 的每個(gè)步驟并附有詳細(xì)的解釋。

3.1.創(chuàng)立數(shù)據(jù)庫(kù)

下面的應(yīng)用使用Oracle數(shù)據(jù)庫(kù)。 安裝后, 先用管理員身份登錄和創(chuàng)建用戶schema,username and password,再以用戶身份登錄后去SQL command 或SQL Script運(yùn)行以下SQL statement :create table Activitylog(id varchar(10), name varchar(20), taskcode varchar(3), tasktime timestamp);現(xiàn)在一個(gè)空表已創(chuàng)立。

3.2.ActivityLog類

現(xiàn)在讓我們創(chuàng)建叫做Activitylog POJO代碼用于存儲(chǔ)從Activitylog表取出的數(shù)據(jù),此類的設(shè)計(jì)使表'Activitylog'的列名將被映射到Java類Activitylog適當(dāng)類型的變量名。 可使用ant工具或plug-in產(chǎn)生,Activitylog類完整的代碼列舉如下:

  1. package com.xxx.audit.pojo;  

  2. public class Activitylog {  

  3.     private String id;  

  4.     private String name;  

  5.     private String taskcode;  

  6.     private Timestamp tasktime;  

  7.     public Activitylog () {  

  8.     }  

  9.     public String getId(){   

  10.          return id;  

  11.     }  

  12.     public void setId(String id){  

  13.         this.id = id;  

  14.     }  

  15.     public String getName(){  

  16.         return name;  

  17.     }  

  18.     public void setName(String name){  

  19.         this.name = name;  

  20.     }  

  21.     public String getTaskcode(){  

  22.         return taskcode;  

  23.     }     

  24.     public void setTaskcode(String taskcode){  

  25.         this.taskcode = taskcode;  

  26.     }  

  27.     public Timestamp getTasktime(){  

  28.         return tasktime;  

  29.     }  

  30.     public void setTasktime(Timestamp tasktime){  

  31.         this.tasktime = tasktime;  

  32.     }  

  33.     public String toString(){  

  34.         return "Id = " + id + ", Name = " + name + ", Taskcode = "   

  35.             + taskcode + ", Tasktime = " + tasktime;  

  36.     }  

3.3.創(chuàng)建Hibernate Mapping 文件

我們已經(jīng)在數(shù)據(jù)庫(kù)中創(chuàng)建了'Activitylog' 表和一個(gè)在應(yīng)用層相應(yīng)的Java類 class,我們需要?jiǎng)?chuàng)建Hibernate Mapping文件去把'Activitylog' 表映射到'Activitylog' Java 類,'Activitylog' 表的列名映射到'Activitylog' Java 類的變量,可使用ant工具或plug-in產(chǎn)生,讓我們看看Hibernate Mapping文件:

  1. Activitylog.hbm.xml   

  2. <?xml version="1.0"?> 

  3. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  

  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

  5. <hibernate-mapping> 

  6.     <class name="com.xxxx.audit.pojo.activitylog" table=" activitylog "> 

  7.     <id name="id" column="Id"> 

  8.         <generator class="assigned"/> 

  9.     </id> 

  10.     <property name="name"> 

  11.         <column name="Name"/> 

  12.     </property> 

  13.     <property name="taskcode"> 

  14.         <column name="Taskcode"/> 

  15.     </property> 

  16.     <property name="tasktime"> 

  17.         <column name="Tasktime"/> 

  18.     </property> 

  19. </class> 

  20. </hibernate-mapping> 

注意映射文件是一個(gè)Xml文件并且它的名字是Activitylog.hbm.xml. 文件名中'hbm' 代表它是Hibernate映射文件。 class 標(biāo)記定義了數(shù)據(jù)庫(kù)表和Java類之間的映射。 'name' 屬性必須指向一個(gè)全路徑的Java類名,反之表屬性必須指向數(shù)據(jù)庫(kù)表,接下來(lái)的標(biāo)記定義了列名和對(duì)應(yīng)java變量之間的映射,'id' 標(biāo)記作為主鍵定義了一行的標(biāo)識(shí),property標(biāo)記有一個(gè)屬性叫'name' 指向Java變量名, 接下來(lái)的是它映射的數(shù)據(jù)庫(kù)表的列名。

3.4.創(chuàng)立Spring配置文件

這部分處理配置各種Spring需要的信息。 在Spring全部的業(yè)務(wù)對(duì)象在Xml文件中配置,配置的業(yè)務(wù)對(duì)象叫做 Spring Beans.這些Spring Beans可通過(guò)IOC維護(hù),讓我們定義一個(gè)data source如下:

  1. spring-hibernate.xml   

  2. <?xml version="1.0" encoding="UTF-8"?> 

  3. <beans xmlns="http://www.springframework.org/schema/beans" 

  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

  5. xsi:schemaLocation="http://www.springframework.org/schema/beans   

  6. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

  7. <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" > 

  8.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 

  9.     <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/> 

  10.     <property name="username" value="root"/> 

  11.     <property name="password" value="root"/> 

  12. </bean> 

  13. ?  

  14. </beans> 

上面bean定義了一個(gè)類型'org.apache.commons.dbcp.BasicDataSource'的data-source. 更重要的是, 它定義了各種訪問(wèn)數(shù)據(jù)庫(kù)所需要的連接屬性。

關(guān)于如何進(jìn)行Spring和Hibernate的集成問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站欄目:如何進(jìn)行Spring和Hibernate的集成
當(dāng)前網(wǎng)址:http://muchs.cn/article0/pispoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、全網(wǎng)營(yíng)銷推廣域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)