程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 米子SSH之路(二) SSH的配置 (3) 集成Hibernate

米子SSH之路(二) SSH的配置 (3) 集成Hibernate

編輯:關於JAVA

今天我們進行SSH配置的最後一步Hibernate的集成。

四,集成Hibernate

4.1  集成Hibernate相關的:

a) 這裡我們采用的proxool連接池。

據說在Hibernate提供的三種連接池中,效率最好的一個。這裡我且聽信網絡大眾的話,等以後我有技 術有能力了,一定會親自測試一下。

b)   Hibernate映射采用Hibernate Annonations 技術。

還是在網上,翻了一堆資料後,發現annonations是最為優雅,也是最為省力,效率最高的

4.2    先創建一個數據庫。這裡我創建一個叫 miziData 的數據庫,並新建了一個叫User的表, 這用來最後我們測試用。

/**//*==============================================================*/

/**//* DBMS name:      MySQL5                    */

/**//* Created on:     2009-04-27 22:50*/

/**//*==============================================================*/

SET FOREIGN_KEY_CHECKS=0;


DROP DATABASE IF EXISTS `miziData`;


CREATE DATABASE `miziData`

    CHARACTER SET 'utf8'

    COLLATE 'utf8_general_ci';

    

USE `miziData`;


/**//*==============================================================*/

/**//* Table: USER                                     

             */

/**//*==============================================================*/

create table USER (

    ID                            varchar(32)        

not null,

    USERNAME         varchar(32)        null,

    SEX            int            null,

    AGE            int            null,

    PASSWORD         varchar(32)        null,

    CREATEDATE        datetime        null,

    constraint PK_USER primary key (ID)

)
type = InnoDB;

4.3 配置proxool連接池信息,在src下面新建一個proxool.xml文件,並修改內容如下:

<?xml version="1.0" encoding="utf-8"?>  

<!-- the proxool configuration can be embedded within your own application's.  

Anything outside the "proxool" tag is ignored. -->  

<something-else-entirely>  

    <proxool> 

        <!-- ### 連接池別名########### --> 

        <alias>DbPool</alias>

        <!-- ### proxool只能管理自己產生的連接########### --> 

        <driver-url>jdbc:mysql://localhost:3306/miziData?characterEncoding=UTF

-8</driver-url> 

        <!-- ###JDBC驅動程式########### -->    

        <driver-class>com.mysql.jdbc.Driver</driver-class> 

        <!-- ### 數據庫信息########### -->   

        <driver-properties>   

            <property name="user" value="root"/>   

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

        </driver-properties>    

        <!-- ### proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閒的連接就馬

上回收,超時的銷毀 ########### --> 

        <house-keeping-sleep-time>28000</house-keeping-sleep-time>    

        <!-- ### 空閒連接最少保持數########### -->  

        <prototype-count>10</prototype-count>  

        <!-- ### 最大/最小連接數########### -->  

        <maximum-connection-count>50</maximum-connection-count>   

        <minimum-connection-count>10</minimum-connection-count>   

        <!-- ### 最大/最小連接數########### -->  

        <maximum-active-time>3600000</maximum-active-time>

        <!-- ### 如果發現了空閒的數據庫連接 

                 house keeper  將會用這個語句來測試.這個語句最好非常快的被

執行.

                  如果沒有定義,測試過程將會被忽略########### --> 

        <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-

sql> 

        <!-- ### 如果為true,在每個連接被測試前都會服務這個連接,如果一個連接失敗

,那麼將被丟棄,

                  另一個連接將會被處理,如果所有連接都失敗,一個新的連接將

會被建立。否則將會拋出一個SQLException異常########### --> 

        <test-before-use>true</test-before-use>

        <!-- ### 如果為true,那麼每個被執行的SQL語句將會在執行期被log記錄(DEBUG 

LEVEL).

                  你也可以注冊一個ConnectionListener (參看ProxoolFacade)得

到這些信息########### -->

        <trace>true</trace>

        <!-- ### 日志統計跟蹤類型  ########### -->

        <statistics-log-level>DEBUG</statistics-log-level> 

    </proxool>  

</something-else-entirely>

4.4  在Src下新建hibernate.xml,並修改內容如下:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

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

<hibernate-configuration>

    <session-factory>

        <!-- ### 定義Hibernate的連接加載類  ########### -->

        <property 

name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProv

ider</property>

        <!-- ### 連接池別名,注意要與proxool的別名一致   ########### -->

        <property name="hibernate.proxool.pool_alias">DbPool</property>

        <!-- ### 向Hibernate聲明連接池的配置文件位置,通常與proxool在同一位置,如

果不同請注意路徑   ########### -->

        <property name="hibernate.proxool.xml">proxool.xml</property>

        <!-- ### 聲明SQL語句的方言  ##########-->

        <property 

name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- ### 解決hibernate和jdbc不能同時使用proxool的問題 ########## -->

        <!-- ### <property 

name="hibernate.proxool.existing_pool">true</property> ###########-->

        <!-- ### Echo all executed SQL to stdout ########## -->

        <!-- ### 定義是否顯示Hibernate生成的SQL語言,一般在調試階段設為true,完成後

再改成false,這樣有利於調試  ##########-->

        <property name="show_sql">true</property>

    </session-factory>

</hibernate-configuration>

4.5 修改application.xml 內容如下:

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

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

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

       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:aop="http://www.springframework.org/schema/aop"

       xmlns:tx="http://www.springframework.org/schema/tx"

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

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

       http://www.springframework.org/schema/aop 

http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

       http://www.springframework.org/schema/tx 

http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

        <!-- ### AnnotationSessionFactoryBean是從LocalSessionFactoryBean類繼承過來

的 ########## -->

        <bean id="sessionFactory" 

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

             <property name="configLocation" value="classpath:hibernate.xml" 

/>

        </bean>

        <!-- 

        * 這裡bean的ID對應的是 struts.xml action的class

        ****************-->

        <bean id="Hello" class="test.action.Hello" 

scope="prototype"></bean>

</beans>

4.6 web.xml 加入 proxoolAdmn 監聽,內容如下,

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

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 

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

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-

app_2_4.xsd">

    <!-- ###################################### -->

    <!-- ##########  Struts2  ################## -->

    <!-- ###################################### -->

    <!-- 

     * Struts2的主要的Filter,負責四個方面的功能:

     * (1)執行Actions

     * (2)清除ActionContext

     * (3)維護靜態內容

     * (4)清除request生命周期內的XWork的interceptors

     * 另注:該過濾器應該過濾所有的請求URL。一般被設置為/*

     ************ -->

    <filter>  

        <filter-name>struts2</filter-name>  

        <filter-

class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  

    </filter>

    <!-- ### Proxool連接池監聽 ########### --> 

    <!-- @Version ver1.0 | 20090428  -->

    <servlet>

        <servlet-name>ProxoolAdmin</servlet-name>

        <servlet-class>

            org.logicalcobwebs.proxool.admin.servlet.AdminServlet

        </servlet-class>

    </servlet>

    <!-- ###################################### -->

    <!-- ##########  Spring2  ################## -->

    <!-- ###################################### -->

    <!-- 

     * [ <context-param></context-param ] =>用來設定web站台的環境參數

     * [ <param-name></param-name> ]  (子元素)=> 用來指定參數的名稱

     * [ <param-value></param-value> ] (子元素)=> 用來設定參數值

     * ************

     * 從類路徑下加載spring的配置文件, 多個配置文件可以用逗號和空格區分

     * classpath:  關鍵字特指類路徑下加載

     ******************** -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:applicationContext*.xml</param-value>

    </context-param>

    <!-- 

     * [<listener></listener>]=>用來設定監聽接口

     * [<listener-class></listener-class>](子元素)=>定義Listener的類名稱

     * *******

     * 負責啟動spring的監聽器

     * 它將引用處的上下文參數獲得spring配置文件地址

     * 指定Spring提供的ContextLoaderListener Web 容器監聽器,

     * 該監聽器在web容器啟動時自動運行並且根據ContextLoaderListener參數

     * 獲取Spring配置文件,並啟動Spring容器。

     ************** -->

    <listener>

        <listener-class>

            org.springframework.web.context.ContextLoaderListener

        </listener-class>

    </listener>

    <filter-mapping>  

        <filter-name>struts2</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>  

    <servlet-mapping>

        <servlet-name>ProxoolAdmin</servlet-name>

        <url-pattern>/proxoolPool</url-pattern>

    </servlet-mapping>
    <display-name>miziStudy</display-name>

    <welcome-file-list>

        <welcome-file>index.html</welcome-file>

        <welcome-file>index.htm</welcome-file>

        <welcome-file>index.jsp</welcome-file>

        <welcome-file>default.html</welcome-file>

        <welcome-file>default.htm</welcome-file>

        <welcome-file>default.jsp</welcome-file>

    </welcome-file-list>

</web-app>

4.7 導入相關包,這次關聯到的包很多,其中有包括hibernate,annotations,proxool等

我試過了 這些包 缺一不可。。。

4.8 測試proxool 數據連接池是否工作。啟動tomcat..成功後在浏覽器中輸入 http://localhost/miziStudy/proxoolPool

如果你得出的頁面和我一致,那麼數據庫連接成功。

可以這麼說吧,SSH(Spring2.5+Struts2+Hibernate3.4)的最簡配置到這裡已經結束了,但是這是永 遠不夠了,還缺了好多東西沒有,比如web.xxml的filter,spring 的AOP,切片,hibernate的事務等等許 多還沒有在這裡顯示出來,但是起碼我們配置成功了,接下來我會不斷用新的實例來豐富這個簡單的配置 ,大家拭目以待吧!!!其實偶自己是最期待的,因為每個實例出來,就代表著我又進一步。。。。加油 !!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved