【问题标题】:Spring JDBC call stored procedure multiple timesSpring JDBC多次调用存储过程
【发布时间】:2018-09-13 19:02:37
【问题描述】:

有时我需要在 forEach 中调用存储过程 n 次。 这很好用,但有时当 n 太大时,我会遇到连接池问题。 特别是我得到了这个例外:

10:34:18,965 ERROR [it.eurobet.easy.service.admin.GroupServiceImpl] (default task-8) Could not get JDBC Connection; nested exception is java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/OracleDS: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/OracleDS

如果我增加连接池的数量,我会解决这个问题,但我认为这不是更好的方法。 我想(对于这种类型的操作)我需要 1 个连接池来执行所有存储过程。

有人可以帮助我吗?

谢谢

【问题讨论】:

    标签: spring stored-procedures jdbc batch-processing


    【解决方案1】:

    您可以使用Spring jdbctemplate执行方法来调用存储过程。

    代码实例:

    getJdbcTemplate().execute(new ConnectionCallback() {
      public Object doInConnection(Connection con) throws JMSException {
        DataSource ds = new SingleConnectionDataSource(con);
        MyStoredProcedure sp = new MyStoredProcedure(ds);    
        return null;
      }
    });
    

    Refer

    同时检查here

    【讨论】:

    • 您好,感谢您的解决方案。如果我使用此代码,当我调用 SimplJdbcCall.execute 时,它​​是打开和关闭新连接还是使用相同的连接?
    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 2012-03-10
    • 2016-05-03
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多