成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

當Spring遇到Hibernate的時候

開發(fā) 后端
本文介紹了Spring和Hibernate的簡介,Spring和Hibernate基礎(chǔ)和集成Sample。

1.介紹

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

2.Spring和Hibernate基礎(chǔ)

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

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

3.集成Sample

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

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

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

3.2.ActivityLog類

現(xiàn)在讓我們創(chuàng)建叫做Activitylog POJO代碼用于存儲從Activitylog表取出的數(shù)據(jù),此類的設(shè)計使表'Activitylog'的列名將被映射到Java類Activitylog適當類型的變量名。 可使用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ù)庫中創(chuàng)建了'Activitylog' 表和一個在應(yīng)用層相應(yīng)的Java類 class,我們需要創(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> 

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

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

這部分處理配置各種Spring需要的信息。 在Spring全部的業(yè)務(wù)對象在Xml文件中配置,配置的業(yè)務(wù)對象叫做 Spring Beans.這些Spring Beans可通過IOC維護,讓我們定義一個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定義了一個類型'org.apache.commons.dbcp.BasicDataSource'的data-source. 更重要的是, 它定義了各種訪問數(shù)據(jù)庫所需要的連接屬性。

4.總結(jié)

    本文討論了Spring 和Hibernate的集成。 既討論了需求也討論了它帶來的好處。 通過一個詳細的實例一步步清晰地演示了集成工作。

【編輯推薦】

  1. Spring.NET1.1.2發(fā)布
  2. Java的Spring框架概述
  3. 對于Struts和Spring兩種MVC框架的比較
  4. Spring創(chuàng)始人:看衰Java EE
  5. 將Flex與Spring集成框架
責任編輯:佚名 來源: 中國IT實驗室
相關(guān)推薦

2023-04-27 07:40:08

Spring框架OpenAI

2015-07-10 15:31:42

ITIoT物聯(lián)網(wǎng)

2015-09-18 15:22:56

DCIMITSM

2011-03-01 10:58:00

2014-04-14 10:21:15

開發(fā)運維DevOps

2010-09-01 15:42:39

DHCP SnoopiARP

2020-05-19 07:57:20

PythonExcel大數(shù)據(jù)

2012-03-16 15:35:21

.netJava

2022-02-23 12:01:41

內(nèi)部威脅數(shù)據(jù)泄露

2017-01-13 10:33:39

華為大數(shù)據(jù)

2010-04-29 14:33:01

Unix系統(tǒng)

2018-02-27 13:59:52

春節(jié)互聯(lián)網(wǎng)直播

2011-04-12 11:34:17

友元虛函數(shù)

2013-07-26 11:17:34

AdTime游戲大數(shù)據(jù)

2015-10-13 09:32:38

WiFi打卡考勤

2019-06-24 16:30:33

區(qū)塊鏈零知識證明比特幣

2015-12-31 15:19:14

霧霾高性能英特爾

2024-06-11 12:38:12

2009-09-22 17:55:51

Spring Hibe

2015-05-06 15:27:11

騰訊云移動應(yīng)用
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人在线不卡 | 日韩精品在线一区 | 中文字幕视频在线观看免费 | 涩涩视频在线观看免费 | 国产一级免费在线观看 | 久久久国产一区二区三区 | 天天干亚洲 | 国产免费一区 | 久久久噜噜噜久久中文字幕色伊伊 | 久久久久国产精品一区 | 国产二区av | 天天摸天天干 | 美女一区二区在线观看 | 欧美午夜精品久久久久久浪潮 | 做a网站 | 午夜伦理影院 | 99久久精品国产一区二区三区 | 中文字幕免费观看 | 婷婷色成人 | 国产成人精品视频在线观看 | 亚洲www | 国产精品国产 | 热99视频 | 国产亚洲一区二区三区在线 | 成人av一区二区三区 | 中文在线一区二区 | 亚洲精品一区在线观看 | 国产精品美女www | 91久久精品国产91久久性色tv | 国产一区二区三区在线看 | 91一区 | 国产黄色大片网站 | 韩国av网站在线观看 | 一级毛毛片| 亚洲风情在线观看 | 亚洲美女在线视频 | av一区二区三区四区 | 在线观看av中文字幕 | 久久香蕉网 | 日日干干夜夜 | 国产视频中文字幕在线观看 |