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

来源:互联网 发布:数据挖掘技术的必要性 编辑:程序博客网 时间:2024/04/27 15:27

本书写了一个常用的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>
原创粉丝点击