对于在Web应用,通常启动时自动加载ApplicationContext,SessionFactory和DAO对象都处在Spring上下文管理下,因此无须在代码中显式设置,可采用依赖注入解耦SessionFactory和DAO,依赖关系通过配置文件来设置,如下所示:
<!--Spring配置文件的DTD定义-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--定义数据源,该bean的ID为dataSource-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!--指定数据库驱动-->
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<!--指定连接数据库的URL-->
<property name="url">
<value>jdbc:oracle:thin:@ip:端口号:服务器名</value>
</property>
<!--root为数据库的用户名-->
<property name="username">
<value>root</value>
</property>
<!--pass为数据库密码-->
<property name="password">
<value>pass</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
<!--依赖注入数据源,注入正是上文定义的dataSource>
<property name="dataSource">
<ref local="dataSource"/>
</property>
<!--mappingResouces属性用来列出全部映射文件>
<property name="mappingResources">
<list>
<!--以下用来列出所有的PO映射文件-->
<value/com/abc/aa/space/pojos/Name.hbm.xml</value>
</list>
</property>
<!--定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<!--指定Hibernate的连接方言-->
<prop key="hibernate.dialect">
org.hibernate.dialect.OracleDialect
</prop>
<!--不同数据库连接,启动时选择create,update,create-drop-->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.fetch_size">50</prop>
<prop key="hibernate.batch_size">30</prop>
</props>
</property>
</bean>
<!--配置Person持久化类的DAO bean-->
<bean id="ArticlePropDAO" class="com.abc.aa.space.pojos.ArticlePropDAO">
<!--采用依赖注入来传入SessionFactory的引用>
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
</beans>
