释放从 ConnectionPool 借来的 Connection
Release a Connection borrowed from ConnectionPool
ScalikeJDBC's
ConnectionPool
docs page 说:
Borrowing Connections
Simply just call #borrow
method.
import scalikejdbc._
val conn: java.sql.Connection = ConnectionPool.borrow()
val conn: java.sql.Connection = ConnectionPool('named).borrow()
Be careful. The connection object should be released by yourself.
但是没有提到如何去做。
我总是可以做到 Connection.close()
但是通过'释放' Connection
,
我知道我应该 return Connection
回到 ConnectionPool
而不是 close它(否则将违背 ConnectionPool
的目的)。
我的疑惑是:
- 一般来说,'releasing' a
Connection
(that has been borrowed from ConnectionPool
) 是什么意思?
- 在
ScalikeJDBC
中,如何从ConnectionPool
'release'Connection
借?
调用 close
没问题。根据 Oracle 文档:Closing a connection instance that was obtained from a pooled connection does not close the physical database connection.
。 scalikejdbc 中的 DBConnection
只是包装 java.sql.Connection
并将调用委托给 close
。使用 scalikejdbc 执行此操作的通常方法是使用 using
函数,该函数本质上是 Java 的 try-with-resources.
的实现
有关 JDBC 的类似讨论,请参阅 Closing JDBC Connections in Pool。
再次查看 docs 后,ScalikeJdbc
确实提供了一个 using
方法来实现 loan-模式 自动 returns connection
到 ConnectionPool
。
所以你可以借一个连接,使用它,return它到池如下:
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
ScalikeJDBC's
ConnectionPool
docs page 说:
Borrowing Connections
Simply just call
#borrow
method.
import scalikejdbc._
val conn: java.sql.Connection = ConnectionPool.borrow()
val conn: java.sql.Connection = ConnectionPool('named).borrow()
Be careful. The connection object should be released by yourself.
但是没有提到如何去做。
我总是可以做到 Connection.close()
但是通过'释放' Connection
,
我知道我应该 return Connection
回到 ConnectionPool
而不是 close它(否则将违背 ConnectionPool
的目的)。
我的疑惑是:
- 一般来说,'releasing' a
Connection
(that has been borrowed fromConnectionPool
) 是什么意思? - 在
ScalikeJDBC
中,如何从ConnectionPool
'release'Connection
借?
调用 close
没问题。根据 Oracle 文档:Closing a connection instance that was obtained from a pooled connection does not close the physical database connection.
。 scalikejdbc 中的 DBConnection
只是包装 java.sql.Connection
并将调用委托给 close
。使用 scalikejdbc 执行此操作的通常方法是使用 using
函数,该函数本质上是 Java 的 try-with-resources.
有关 JDBC 的类似讨论,请参阅 Closing JDBC Connections in Pool。
再次查看 docs 后,ScalikeJdbc
确实提供了一个 using
方法来实现 loan-模式 自动 returns connection
到 ConnectionPool
。
所以你可以借一个连接,使用它,return它到池如下:
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