与HibernateTemplate和SessionFactory的单一数据库连接

M4n*_*nux 3 java spring hibernate jdbc

在java方面,一切正常,但当我查看V $ SESSION特殊oracle表时,在我的日志表中记录任何登录或注销操作,这是一场灾难......每个查询都进行登录/注销操作.所以这是我的问题:有没有办法将Spring配置为与数据库建立唯一连接,或者我连接的方式有什么问题?在这里,我的数据源bean配置:

<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>
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,为了获取数据库参数的DAO,我做了一个

  IXalVaParametresDAO parametreDAO = (IXalVaParametresDAO) ConfigApplication
           .getApplicationContext(this.log).getBean("IXalVaParametresDAO");
Run Code Online (Sandbox Code Playgroud)

最后,在我的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);
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,每次调用"查找"方法时,它都会进行数据库登录/注销.我猜这个问题在另一个DB上是一样的.我做对了吗?我猜不会.我希望HibernateTemplate能够一劳永逸地创建和保持会话.那可能吗 ?谢谢你的想法

Manux