我有以下用例。
我们的客户端应用程序将生成一个API(这是我)调用,它在对客户端应用程序执行数据库调用后返回一个java结果集。我想知道客户端何时使用结果集,以便我可以关闭结果集和与之关联的连接。所以我认为设计是将结果集包装在一个新对象中,该对象具有关闭结果集和与之关联的连接的行为。必须由客户端调用此清理方法。现在,由于某种原因,如果客户端应用程序从未调用此清理方法,那么我们将最终使用开放连接和未释放的数据库资源。有没有办法让一些人更好地监控这一点,并确保迅速释放所有数据库资源。此外,如果有任何设计模式可能有助于此用例,请告诉我。
感谢。
答案 0 :(得分:2)
永远不要将昂贵的数据库资源(例如ResultSet
)返回到您失去所有控件的API之外。而是将其映射到List<Map<String, Object>>
或可重复使用的东西并将其返回。
答案 1 :(得分:1)
一种方法是使用幻像引用清理对象的结果集/连接(我更喜欢使用finalize) - 这样,你应该能够清理对象并简单地将它返回到池中。根据您的使用情况,您也可以查看超时。
另外,同意另一个关于在可能的情况下不通过结果集的建议 希望能帮助到你。