Java 对于spring和hibernate,需要澄清数据源和会话是如何连接的
我的DAO将扩展spring提供的Java 对于spring和hibernate,需要澄清数据源和会话是如何连接的,java,hibernate,spring,spring-mvc,Java,Hibernate,Spring,Spring Mvc,我的DAO将扩展spring提供的HibernateDaoSupport类 现在我需要: 在web.xml中设置我的数据库连接 告诉spring我正在为hibernate映射使用注释 将会话连接到HibernateDaoSupport对象 该文档显示了一个示例xml: <beans> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&
HibernateDaoSupport
类
现在我需要:
<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>
product.hbm.xml
hibernate.dialogue=org.hibernate.dialogue.hsql方言
因此,“mydatasource”配置到数据库的连接,mySessionFactory设置会话
我感到困惑的是,这些bean在代码中的什么地方被使用
我想创建一个扩展HibernateDaoSupport
的GenericDaoImpl
。然后我将创建扩展GenericDaoImpl的EntityDaoImpl
只是混淆了“mydatasource”和“mysessionFactory”在内部的使用位置。它们不都应该是HibernateDaoSupport
的属性吗?
它们不都应该是我们的财产吗
冬眠支持
嗯,SessionFactory
应该。DAO不需要数据源
,因为它是由会话工厂内部使用的。您自己的代码应该不需要原始数据源
,因此不必注入它
您的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()
}
Ah ok,但由于我使用的是每个EntityDao将从中继承的GenericDao,所以我只需要做一次!很酷。那么你说“mydatasource”只是供“mysessionfactory”bean引用,在代码中真的不应该有任何对“mydatasource”bean的引用吗?它仅在.xml中被sessionFactory引用,对吗?Spring将要求您为要使用的每个GenericDao实现声明一个实例,否则Spring将不知道如何创建实例
<bean id="daoA" class="DaoA">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean id="daoB" class="DaoB">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>