1

我有以下用例。

我们的客户端应用程序将进行一个 API(这是我)调用,该调用在对客户端应用程序执行 db 调用后返回一个 java 结果集。我想知道客户端何时使用结果集完成,以便我可以关闭结果集以及与之关联的连接。所以我认为的设计是发送包装在一个新对象中的结果集,该对象具有关闭结果集和与之关联的连接的行为。此清理方法必须由客户端调用。现在,由于某种原因,如果客户端应用程序从未调用过此清理方法,那么我们将以打开的连接和未释放的数据库资源结束。有没有办法更好地监控这一点并确保所有数据库资源都被及时释放。此外,如果有任何设计模式可能有助于此用例,请告诉我。

谢谢。

4

2 回答 2

2

永远不要将昂贵的数据库资源返回ResultSet到您失去所有控制权的 API 之外。而是将其映射到一个List<Map<String, Object>>或可重用的东西并返回它。

于 2012-08-01T16:39:40.077 回答
1

一种方法是使用幻像引用从对象中清理结果集/连接(我更喜欢使用 finalize) - 这样,您应该能够清理对象并将其简单地返回到池中。根据您的用例,您也可以查看超时。

此外,同意其他关于尽可能不传递结果集的建议。
希望能帮助到你。

于 2012-08-01T16:35:52.793 回答