0

ScalikeJDBC's ConnectionPool 文档页面说:


借用连接

只需调用#borrow方法。

import scalikejdbc._
val conn: java.sql.Connection = ConnectionPool.borrow()
val conn: java.sql.Connection = ConnectionPool('named).borrow()

当心。连接对象应该自己释放。


但是没有提到如何做到这一点。

我总是可以这样做Connection.close(),但是通过“释放Connection,我知道我应该将Connection返回到ConnectionPool而不是关闭它(否则ConnectionPool将违背拥有 a 的目的)。


我的疑问是:

  1. 一般来说,“释放”一个Connection(从 借来的ConnectionPool)是什么意思?
  2. ScalikeJDBC中,我如何“释放”Connection 借来ConnectionPool
4

2 回答 2

3

打电话close就好了。根据 Oracle 文档:Closing a connection instance that was obtained from a pooled connection does not close the physical database connection.. scalikejdbcDBConnection中的 仅包装java.sql.Connection并委托调用close. 使用 scalikejdbc 执行此操作的通常方法是使用该using函数,该函数本质上是 Java 的 try-with-resources 的实现。

有关 JDBC的类似讨论,请参阅关闭池中的 JDBC 连接。

于 2018-04-28T15:13:50.737 回答
1

再次查看文档后,ScalikeJdbc确实提供了using一种实现贷款模式的方法,该方法自动connectionConnectionPool.

因此,您可以借用一个连接,使用它,然后将其返回到池中,如下所示:

import scalikejdbc.{ConnectionPool, using}
import java.sql.Connection

using(ConnectionPool.get("poolName").borrow()) { (connection: Connection) =>
    // use connection (only once) here
}
// connection automatically returned to pool
于 2018-05-02T05:58:36.787 回答