C3p0 带有JDBCTemplate的ComboPooledDataSource的设置

C3p0 带有JDBCTemplate的ComboPooledDataSource的设置,c3p0,C3p0,为了访问数据库,我使用com.mchange.v2.c3p0.ComboPooledDataSource创建了具有以下属性的数据源 ` ` 我的dao类扩展了JDBCDaoSupport,上面的数据源被设置到JDBCDaoSupport中,inturn为执行查询提供了JDBCTemplate。我没有使用任何事务管理器。 我现在有两个问题: 如何管理中的事务?JDBCTemplate本身是否在插入之前创建事务 若数据库不可用,初始化c3p0池将进入无限等待。我想应该有一些属性可以设置为池初始

为了访问数据库,我使用com.mchange.v2.c3p0.ComboPooledDataSource创建了具有以下属性的数据源 `


` 
我的dao类扩展了JDBCDaoSupport,上面的数据源被设置到JDBCDaoSupport中,inturn为执行查询提供了JDBCTemplate。我没有使用任何事务管理器。 我现在有两个问题:

  • 如何管理中的事务?JDBCTemplate本身是否在插入之前创建事务
  • 若数据库不可用,初始化c3p0池将进入无限等待。我想应该有一些属性可以设置为池初始化的超时。 我试过了
    但不确定这样做是否正确
    我不确定JDBCTemplate是否与ComboPooledDataSource一起工作。。。我试图用c3p0配置它,但它给了我警告,连接没有返回到池,并且为每个请求创建了新的连接。它刚刚淹没了我的Mysql服务器(以及我的应用程序,尝试获取,连接太多错误)
    此外,除了一篇关于RoseIndia的教程外,我在网上找不到任何关于JDBCTemplate配置的内容。随后产生了这些错误

    我建议在db事务中使用SessionFactory(或者您可能更喜欢核心jdbc PreparedStatement和Resultset)
    就重试尝试而言,我认为c3p0在默认配置下不会变成无限方式。您可以使用收单机构重试和收单机构重试设置重试时间
    从McChange网站本身:

    “当c3p0数据源尝试获取连接但失败时,它将重试多达AcquisiteRetryAttents次,每次尝试之间的延迟为AcquisiteRetryDelay。如果所有尝试都失败,等待数据源连接的任何客户端都将看到异常,表明无法获取连接。”

    最好阅读McChange的参考文档,并根据需要配置c3p0。


    默认情况下,c3p0会尝试30次联系数据库[
    acquisitionerryattents
    =30],延迟时间为1000毫秒[
    acquisitionerrydelay
    =1000]。它不会永远尝试。但是,除非您将
    breakAfterAcquireFailure
    =true设置为true,否则每当新客户端请求连接时,它将开始新一轮的尝试,因此看起来可能是这样的。我对JDBCTemplate一无所知;也许你应该在帖子中添加一个标签或Spring框架,以吸引可能的人的注意。
        <property name="initialPoolSize" value="5" />
        <property name="minPoolSize" value="5" />
        <property name="maxPoolSize" value="10" />
        <property name="idleConnectionTestPeriod" value="200" />
        <property name="acquireIncrement" value="1" />
        <property name="maxStatements" value="25" />
        <property name="numHelperThreads" value="3" />`