在java方面,一切正常,但是當我查看V $ SESSION特殊的oracle表,並在我的日誌表中記錄任何登錄或註銷操作時,這是一場災難......每個查詢都會執行登錄/註銷操作。所以,這裏是我的問題:有什麼辦法可以配置Spring與數據庫有唯一的連接,或者在連接的方式上有什麼問題? 在這裏,我的數據源bean的配置:在HibernateTemplate和SessionFactory上的單一數據庫連接
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@nanssunorad:1523:nanorad3</value>
</property>
<property name="username">
<value>foo</value>
</property>
<property name="password">
<value>bar</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>hibernateESign.cfg.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="IXalVaParametresDAO" class="fr.asterion.archivage.hibernate.XalVaParametresDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
在我的應用程序,以獲取數據庫參數的DAO,我做了
IXalVaParametresDAO parametreDAO = (IXalVaParametresDAO) ConfigApplication
.getApplicationContext(this.log).getBean("IXalVaParametresDAO");
,最後,在我的DAO類,我做些事情像這樣:
public class XalVaParametresDAO implements IXalVaParametresDAO
{
private HibernateTemplate hibernateTemplate;
public void setSessionFactory(SessionFactory sessionFactory)
{
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
public List<XalVaParametres> findAll()
{
log.debug("finding all XalVaParametres instances");
try
{
String queryString = "from XalVaParametres";
List lst = this.hibernateTemplate.find(queryString);
在我的應用程序,每一個我稱之爲「發現」的方法時,它確實DB登錄/註銷。我猜這個問題在另一個數據庫上是一樣的。我正確地做事情嗎?我猜不會。我希望HibernateTemplate能創建並保持會話一勞永逸。那可能嗎 ? 感謝您的想法
Manux
好,我用Apache的BasicDataSource嘗試過,效果非常好!正如axtavt所說的那樣,DriverManagerDataSource的使用不會因爲連接句柄不正確而被阻止。謝謝大家的迴應。 – M4nux 2011-03-18 16:25:53
@ M4nux歡迎您,但您也應該接受我們的答案之一(點擊勾號) – 2011-03-18 16:36:10
您解決了我的問題!非常感謝你!! – 2012-12-28 08:52:23