我正在向我们的 java 应用程序添加连接池。
该应用程序可以与不同的 rdbmses 一起工作,既可以作为桌面应用程序,也可以作为无头 Web 服务。基本实现在桌面模式下运行良好(rdbms = derby)。当作为 web 服务(rdbms = mysql)运行时,我们看到需要连接池才能获得良好的并发行为。
我最初的方法是在启动时使用依赖注入来决定是基本数据源还是连接池数据源。
这种情况下的问题是我不知道什么时候调用connection.close()。我的理解是,在使用连接池时,应该在每次查询后 close() 以便可以回收连接对象。但是当前的非池实现尝试尽可能长时间地挂在 Connection 对象上。
这个问题有解决方案吗?有没有办法回收一个基本的连接对象?如果我不使用线程池连接对象调用 connection.close() 会发生什么?
或者混合这两种连接策略只是一个糟糕的设计?