本系列第三篇,完成 SSH 最後一塊拼圖——Hibernate 整合。採用 Proxool 連接池 + Hibernate Annotations 映射,展示從數據庫建表到驗證連接池運行的全過程。
CREATE DATABASE miziData CHARACTER SET utf8 COLLATE utf8_general_ci;
USE miziData;
CREATE TABLE USER (
ID VARCHAR(32) NOT NULL PRIMARY KEY,
USERNAME VARCHAR(32), SEX INT, AGE INT,
PASSWORD VARCHAR(32), CREATEDATE DATETIME
) ENGINE=InnoDB;
<proxool>
<alias>DbPool</alias>
<driver-url>jdbc:mysql://localhost:3306/miziData?characterEncoding=UTF-8</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="root"/>
</driver-properties>
<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-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
<test-before-use>true</test-before-use>
<trace>true</trace>
<statistics-log-level>DEBUG</statistics-log-level>
</proxool>
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
<property name="hibernate.proxool.pool_alias">DbPool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.xml"/>
</bean>
<bean id="Hello" class="test.action.Hello" scope="prototype"/>
ProxoolAdmin Servlet 映射到 /proxoolPool,提供連接池監控頁面。contextConfigLocation 使用 classpath:applicationContext*.xml 通配符載入多配置文件。Hibernate 核心、Annotations、Proxool、MySQL 驅動、SLF4J、Commons Collections/Logging 等,缺一不可(文中附圖展示)。
https://localhost/miziStudy/proxoolPool。到此 SSH(Spring 2.5 + Struts 2.0.11 + Hibernate 3.4)最小可運行棧配置完成。實戰專案仍需補全事務、安全、緩存、日誌、構建腳本等工程化內容。