사용자 도구

사이트 도구


springframework:lazyconnectiondatasourceproxy

LazyConnectionDataSourceProxy

  • 스프링은 트랜잭션 시작시 컨넥션의 실제 사용여부와 무관하게 커넥션을 확보한다.
  • 이로인해 트랜잭션 시작 후 커넥션과 무관한 다른 작업으로 많은 시간이 지체되면 그 시간 동안 해당 트랜잭션의 커넥션은 사용불가 상태가 되어, 데이터소스에 커넥션 풀이 부족해지는 사태를 유발할 수도 있다.
  • 혹은 혹은 캐시를 사용하여 커넥션이 전혀 필요없는 상태에서는 아예 커넥션을 맺지 않고 지나갈 수도 있다.
  • LazyConnectionDataSourceProxy를 사용하면 트랜잭션이 시작 되더라도 실제로 커넥션이 필요한 경우에만 데이터소스에서 커넥션을 반환한다.
  • 설정 예
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
        <property name="targetDataSource">
            <ref local="mainDataSource" />
        </property>
    </bean>
     
    <!-- BoneCP configuration -->
    <bean id="mainDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1/yourdb" />
        <property name="username" value="root"/>
        <property name="password" value="abcdefgh"/>
        <property name="idleConnectionTestPeriod" value="60"/>
        <property name="idleMaxAge" value="240"/>      
        <property name="maxConnectionsPerPartition" value="60"/>
        <property name="minConnectionsPerPartition" value="20"/>
        <property name="partitionCount" value="3"/>
        <property name="acquireIncrement" value="10"/>                              
        <property name="statementsCacheSize" value="50"/>
        <property name="releaseHelperThreads" value="3"/>
    </bean>
springframework/lazyconnectiondatasourceproxy.txt · 마지막으로 수정됨: 2013/01/04 08:58 저자 kwon37xi