我的DAO将扩展spring提供的HibernateDaoSupport
类。
现在我需要:
在web.xml中设置我的数据库连接
告诉spring我正在使用注释进行休眠映射吗?
将会话连接到HibernateDaoSupport对象。
该文档显示了一个示例xml:
<beans>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>product.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>
</beans>
因此,“ mydatasource”配置与数据库的连接,而mySessionFactory设置会话。
我感到困惑的是,这些bean在代码中的哪里使用?
我想创建一个扩展
GenericDaoImpl
的HibernateDaoSupport
。然后,我将创建扩展GenericDaoImpl的EntityDaoImpl
。只是对内部使用“ mydatasource”和“ mysessionFactory”的位置感到困惑。它们都不应该是
HibernateDaoSupport
的属性吗? 最佳答案
他们都不应该都是
HibernateDao支持吗?
好吧,SessionFactory
应该。 DAO不需要DataSource
,因为SessionFactory
在内部使用。您自己的代码应该不需要原始的DataSource
,因此不必将其注入。
您的DAO(扩展了HibernateDaoSupport
)需要注入SessionFactory
bean,例如
public class DaoA extends HibernateDaoSupport {
// business methods here, that use getHibernateTemplate()
}
public class DaoB extends HibernateDaoSupport {
// business methods here, that use getHibernateTemplate()
}
<bean id="daoA" class="DaoA">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean id="daoB" class="DaoB">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>