我們之所以整合框架,就是因為它們整合在一起後會工作的更好,它們為各自提供了一些操作。
我們整合Spring與Hibernate也不例外,就是因為Spring為Hibernate增加了以下內容:
1.Spring為Hibernate的session提供了有效、容易和安全的控制。
2.Spring控制Hibernate的SessionFactory,JDBC DataSources及其它相關資源。
3.Spring提供了完整的事務管理。
4.Spring對異常處理進行了封裝。
Spring與Hibernate的集成先要確定配置文件的配置方式,然後再根據配置方式決定編寫實現類。
配置文件方面,主要是需要在applicationContext-commons.xml中配置sessionFactory,事務管理器和事務(還需要提供applicationContext-beans.xml來注冊各個類,見文件最後)。
由於Spring對Hibernate提供了多種支持,所以它們各自就會有多種配置方式,下面就來分別講解一下具體的配置方法。
1.sessionFactory的兩種配置方式
由於Spring對Hibernate的SessionFactory,JDBC DataSources及其它相關資源進行了控制,所以可以不使用hibernate.cfg.xml,於是配置sessionFactory的兩種方式誕生了:使用hibernate.cfg.xml和不使用hibernate.cfg.xml文件。
1)使用hibernate.cfg.xml
這種方法是比較常見的方法,就是我們編寫一個hibernate.cfg.xml和一個applicationContext.xml文件。
我們先來看hibernate.cfg.xml:
- <hibernate-configuration>
- <session-factory>
- <property name="hibernate.connection.driver_class">Oracle.jdbc.driver.OracleDriver</property>
- <property name="hibernate.connection.password">dan</property>
- <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:dan</property>
- <property name="hibernate.connection.username">dan</property>
- <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
- <property name="hibernate.hbm2ddl.auto">update</property>
-
- <mappingresourcemappingresource="com/entity/hbm/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
接著我們來看applicationContext.xml的配置:
- <!-- 配置SessionFactory-->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <!-- 加載hibernate.cfg.xml配置文件 -->
- <property name="configLocation">
- <value>classpath:hibernate.cfg.xml</value>
- </property>
- </bean>
2)不使用hibernate.cfg.xml
由於spring對jdbcdatasource進行了支持,所以這種方式就相當於把hibernate.cfg.xml中的內容放到了applicationContext.xml中。
注意:使用這種方法要先引入兩個jar包:commons-dbcp.jar和commons-pool.jar(這兩個jar包就是spring對jdbc的支持)。
下面就來看一下applicationContext.xml的代碼:
- <!—使用BasicDataSource配置SessionFactory -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:dan"></property>
- <property name="username" value="dan"></property>
- <property name="password" value="dan"></property>
- </bean>
-
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
-
- <!-- hibernate屬性配置 -->
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- </props>
- </property>
-
- <!-- 采用傳統的方式的hbm.xml的方式,可以采用如下方式來簡化注冊hbm.xml的步驟-->
- <property name="mappingLocations">
- <list>
- <value>classpath:/com/entity/hbm/User.hbm.xml</value>
- </list>
- </property>
- </bean>
接下來會繼續介紹事務的配置,請看《Spring與Hibernate整合方式(二)》。http://www.linuxidc.com/Linux/2012-03/57452p2.htm