ssh项目中,随着项目的启动spring会建立数据库连接池。那么在这个系统运行起来之后,如果在别的地方又读取一遍spring、hibernate的配置,并且取session做些操作的话,
那么就会有2个连接池了呢??如果要避免出现多个连接池,是不是只能把所有用hibernate的地方都配置在spring的bean中来获取?

解决方案 »

  1.   

    hibernate配置连接池和数据缓存麻烦
       你把sessionfactory和数据链接交给spring就够了
     项目启动  容器加载 并读取配置文件   不需要你去管
      

  2.   

    没错,hibernate除了配置一下方言和sql日志之类的,其他都不用管了。applicationContext.xml<beans>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="hibernate.cfg.xml" />
    </bean> <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    </beans>
      

  3.   


    1. 系统运行起来了,还有其他非本工程里面的人,会读取配置?或者你在本工程里面里面,在手动写类似在junit测试里面获取bean实例那样的语句。2. 如果会,还真没试过,这个估计你把spring和hibernate的源码包挂进去跟踪调试,或者在spring里面配个aop,监测连接池初始化。
      

  4.   


    对,的确是在工程中使用了类似junit测试中获取bean实例那样的语句
      

  5.   

    不会有两个连接池的,配置好了之后  hibernate.cfg.xml这个文件可以删掉,对其他的没影响
      

  6.   


    他说的估计是运行时。配置文件已经读到内存里面了,删掉估计没问题,没试过,但是就你这个例子,运行时,删掉了文件。你又手动去读取配置,生成Session实例,肯定会报配置文件找不到的错的。他们还是没有说明为什么只有一个连接池。所以,还是照我上面的那个想法测试。关键点:你在生成连接池的地方监听下,连接池每次生成。都打印一句话到控制台,这样就知道,到底生成了几个连接池。