在Struts2中集成了Spring之後再集成Hibernate就非常容易了,在這裏我們需要用到Spring提供的ORM模塊。通過這個模塊Spring提供了對Hibernate、JDO、OJB和iBatis的集成。
在與Hibernate集成時我們需要用到Spring的LocalSessionFactoryBean類,這個類可以看作是連接Spring與Hibern ate的橋樑。
一.首先我們在Spring配置如下的兩個bean:
<!-- 實現spring與hibernate的集成 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!-- 配置基本數據源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>111111</value>
</property>
</bean>
上面兩個bean爲我們提供了很多信息dataSource爲我們提供了數據連接的相關信息,至於LocalSessionFactoryBean,它裏面提供的很多信息都是與Hibernate配置文件中的內容對應的,有些信息我們可以通過LocalSessionFactoryBean設置也可以通過配置文件來進行設置。比方說,我們可以通過設置LocalSessionFactoryBean的mappingResources屬性來指定Hibernate映射文件,也可以在hibernate.cfg.xml中利用mapping元素的resource屬性來指定映射文件,它們的效果是相同的。還有hibernateProperties屬性對應於配置文件中的property元素等等。
二.使用HibernateDaoSupport或者HibernateTemplate操作數據庫
使用Spring提供的這兩個類就可以很容易的操作數據庫了。我們在Spring中配置一個HibernateTemplate的實例bean:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
將hibernateTemplate裝配到我們的service中後就可以直接利用hibernateTemplate來操縱數據庫了。不過平常使用較多的都是Hibernate的Dao支撐類,Spring採用的是模板—回調設計模式,能夠讓我們專注於特定方法的實現。