《Spring2.0技术手册》读书笔记八-Spring与Hibernate整合

本书写了一个常用的Spring整合Hibernate的方法,主要修改spring的xml配置文件

Hibernate的连接、事务管理等都是由建立SessionFactory开始的,SessionFactory在应用程序中通常只需存在一个实例,因而SessionFactory底层的DataSource可使用spring的IOC注入,之后再把SessionFactory注入到相依赖的对象之中。

 

<beans>
	<!-- 数据源配置 -->
	<bean id="dataSource" 
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/demo"/>
		<property name="username" value=""/>
		<property name="password" value=""/>
	</bean>
	
	<!-- SessionFactory of Hibernate -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
		destroy-method="close">
		<property name="dataSource" ref="dataSource"/>
		<!-- 映射文件 -->
		<property name="mappingResources">
			<list>
				<value>User.hbm.xml</value>
				<value>Product.hbm.xml</value>
			</list>
		</property>
		<!--
		<property name="mappingDirectoryLocations">
			<list>
				<value>classpath:/com/test</value>
			</list>
		</property> 
		 -->
		<!-- 指定数据库类型 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
	</bean>
	
	<!-- 使用举例,对DAO类注入sessionFactory -->
	<bean id="userDAO" class="com.test.UserDAO">
		<property name="sessionFactor" ref="sessionFactory"/>
	</bean>
</beans>

整合的好处,可以直接将DataSource注入至LocalSessionFactoryBean中,至于Hibernate所需的相关设置,则可通过LocalSessionFactory相关属性来设置。省略了hibernate.cfg.xml文件。映射文件(指定对象与其关联的表格)的位置与名称指定在mappingResources中。使用mappingDirectoryLocations属性,可以一次性指定某路径下得所有.hbm.xml文件

 

补:如果想保留hibernate.cfg.xml,可以将hibernate的配置单独放在该文件中,在applicationContext.xml中引用该文件。如下:

 

<bean id="sessionFactory"  
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  <property name="configLocation">  
   <value>classpath:hibernate.cfg.xml</value>  
  </property>  
 </bean> 

 

补充:spring运用在web应用中,只需修改web.xml,添加spring的配置文件及监听器即可。

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
posted @ 2011-07-11 21:23  春文秋武  阅读(147)  评论(0编辑  收藏  举报