使用的版本為:Struts 2.1.6 + Spring 2.5 + Hibernate 3.2
開發環境為:MyEclipse 7.1.1 + Jdk 1.6.0_13 + Tomcat 6.0.18 + MySQL 6.0.10 alpha
所用表:test.employee
id int(11) NO PRI | NULL auto_increment

name varchar(255) YES NULL

address varchar(255) YES NULL

phone varchar(255) YES NULL


這個實例主要是實現簡單的CRUD方法。在搭建環境前,需要處理一個問題:因為Spring2.5 AOP Liberaries里的asm2.2.3.jar和Hiberate中的生成代理用的asm.jar沖突,我們需要刪除asm2.2.3.jar,不然就會發生異常:java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor 。具體的刪除方法(避免在Tomcat中的lib下刪除了,然后又重新發布項目時此jar又重新發不到lib下):在MyEclipse中【Window】à【Preferences】à【MyEclipse Enterprise Workbench】à【Project Capabilities】à【Spring】在spring2.5 AOP Libraries中刪除asm2.2.3.jar
在開發S2SH架構時,先整合Spring + Hibernate ,然后再整合Struts + Spring 完成S2SH架構的搭建。
一、Srping 與 Hibnernate 的整合
(1)添加Hibernate支持
在添加Hibernate支持之前,我們先在【MyEclipse DataBase Explorer】中設置數據庫連接。所用的mysql/jdbc的jar包為mysql-connector-java-5.1.8-bin.jar。

注意:MySQL的URL為:jdbc:mysql://localhost:3306/test(我所根據學的視頻案例是連接oracle的,根據視頻中所學的時候,url沒有添加數據庫,在測試過程當中怎么樣也找到實體,原因就是因為在url中沒有添加數據庫的選擇。)
后面按照默認設置一直到【finish】即可。
(a)在導航中找到【MyEclipse】,然后選擇【Add Hibernate Capbilities】

這里可以直接選擇jar包拷貝到lib下面,也可以先不拷貝,到時候MyEclipse會自動拷貝到lib下。
(b)由于Hibernate要與Spring整合,所以在這一步無需再配置更詳細的hibernate.cfg.xml

在這個按列中,我們使用JDBC Driver模式。
(c)不創建sessionFactory。然后【finish】



(2)添加Spring支持
(a)在導航中找到【MyEclipse】,然后選擇【Add Spring Capbilities】
添加5個類庫。

(b)生成applicationContext.xml,建議將其放在WEB-INF下面。

(c)創建sessionFactory。然后【finish】


(3)整合Spring和Hibernate
打開applicationContext,在當中增加DataSource和SessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
|
先將原先自動生成的上述代碼刪除。

然后再Outline的導航中選擇【New DataSource and SessionFactory】

后面要用到Mapping Resources,所以你可以在這里隨便填一個值進去。

最后添加部分屬性(添加了hibernate.show_sql)后形成代碼如下:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>file:src</value>
</list>
</property>
</bean>
|
自此已經完成了Spring與Hibernate的整合。