用于连接池的C3p0 API

时间:2017-06-30 11:01:57

标签: java jdbc c3p0

我发现c3p0连接池每次都为连接创建新对象,例如假设我有5个连接的池,当我在使用该关闭后从池中获得连接然后再次获取连接时每次获取新的哈希码然后如何我们可以说它是连接池..如果每次池创建一个新连接,那么池如何知道特定连接被关闭?

1 个答案:

答案 0 :(得分:2)

从连接池获得的连接通常是物理连接周围的包装器(代理),这也是c3p0使用的方法。这是为了隔离与用户的实际物理连接,它允许拦截关闭操作以返回到池的连接。此外,此包装器通过表现为封闭连接来保护物理连接(以及应用程序的其他部分)免于行为不当。例如,在关闭它之后尝试继续使用连接的代码,这可能导致难以诊断竞争条件或其他奇怪的行为,而是会出现连接关闭错误。

因此,预计从池中获得的连接每次都会有不同的身份,因为它实际上是一个新的逻辑'每次连接;它恰好重用(包装)池中的物理连接。