Spring JDBC连接池最佳实践

发布于 2021-02-02 18:13:24

我有一个具有相当基本配置的基本Spring JDBC应用程序:

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
   <property name="url" value="jdbc:oracle:thin:@1.1.1.1:1521:XXX"/>
   <property name="username" value="username"/>
   <property name="password" value="password"/>
</bean>

<bean id="dbThing" class="com.DbThing">
   <property name="dataSource" ref="myDataSource"/>
</bean>

我想介绍一个连接池,并且在阅读了SO上的多个线程后,对于使用哪个池库感到有些困惑。

C3P0和DBCP似乎对SO有更多的贡献。由于使用的是Oracle,因此我也可以使用驱动程序提供的池数据源。

我了解还有更多可用的库-例如新的Apache Tomcat 7池库。

我真的应该避免使用任何库吗?

我应该在给定的库中使用任何建议的配置吗?

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    C3PO和DBCP的开发停滞主要是因为它们已经成熟。我已经看到这两个驱动程序都能够每秒支持数百个事务。

    Tomcat池是经过重新设计和更新的DBCP驱动程序。MyBatis 3.0还包含它自己的池实现,基于代码检查,它看起来很可靠。最后,还有声称拥有最佳性能的BoneCP。我还没有在项目中使用任何这些。

    最好的建议可能是选择其中任何一个进行测试。Spring使以后可以轻松换出。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    作为BoneCP的替代品,你是否尝试过Oracle自己的数据库连接池?

    在过去的几周中,我一直有很好的经验,因此值得一试-而且,我想Oracle对于建立连接池特​​别是与自己的数据库配对时,会了解一两件事。

    <bean id="dataSource" class="oracle.jdbc.pool.OracleConnectionPoolDataSource">
        <property name="URL" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>
    

    更新:另外,如果你使用的是最新的Oracle JDBC驱动程序(11.2.0.1 +)(之一),则可能要尝试新的通用连接池。在OracleConnectionPoolDataSource似乎赞成这一池的正式弃用。但是,有些用户报告了使用它的错误,因此可能为时过早。我可以使用Oracle最新的JDBC驱动程序,因此一旦有任何相关信息,我将尝试在这里进行更新。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看