【问题标题】:Configure spring datasource for hibernate and @Transactional为hibernate和@Transactional配置spring数据源
【发布时间】:2011-05-10 13:22:04
【问题描述】:

此时我正在使用带有 @Transactional 注释的 DriverManagerDataSource 来管理事务。但是所有事务都非常非常慢,可能是因为数据源每次都打开和关闭与db的连接。

我应该使用什么数据源来加快交易速度?

【问题讨论】:

    标签: java hibernate spring transactions datasource


    【解决方案1】:

    DriverManagerDataSource 实际上并不是一个连接池,只能用于测试。您应该从Apache Commons DBCP 尝试BasicDataSource。比如:

    <bean id="dataSource" destroy-method="close" 
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    

    【讨论】:

      【解决方案2】:

      我在我的应用程序中使用了两种方法的组合。第一个是 c3p0 连接池,它与 chkal 建议的解决方案几乎相同。第二种方法是使用 SpringlazyConnectionDataSourceProxy,它创建延迟加载代理,仅当您点击数据库时才加载连接。这非常有用,当您有二级缓存并且您只读取缓存的数据和查询时 - 不会命中数据库,并且您不需要获取连接(这非常昂贵)。

      <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
          <property name="driverClass" value="${jdbc.driverClassName}" />
          <property name="jdbcUrl" value="${jdbc.url}" />
          <property name="user" value="${jdbc.username}" />
          <property name="password" value="${jdbc.password}" />
          <!-- Pool properties -->
          <property name="minPoolSize" value="5" />
          <property name="initialPoolSize" value="10" />
          <property name="maxPoolSize" value="50" />
          <property name="maxStatements" value="50" />
          <property name="idleConnectionTestPeriod" value="120" />
          <property name="maxIdleTime" value="1200" />
      
      </bean>
      
      <bean name="lazyConnectionDataSourceProxy" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
          <property name="targetDataSource" ref="dataSource" />
      </bean>
      

      【讨论】:

      • comboPooledDatasource 缺少 destroy-method="close" 属性
      猜你喜欢
      • 2017-03-06
      • 1970-01-01
      • 2010-12-30
      • 2019-03-14
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多