应该使用预准备语句池化JDBC连接是短暂的还是长期存在的?

时间:2012-05-11 18:26:46

标签: jdbc prepared-statement connection-pooling c3p0

如果连接不是物理连接而是来自ConnectionPoolDataSource的抽象,是否更好地将连接紧紧包裹在SQL操作中或让连接在应用程序中保持不变? (我正在使用c3p0作为记录。)

等效(我认为):如果每个应用程序都有一次getConnection(),那么c3p0会使它看起来像一个稳定的连接,即使底层物理连接已经死亡并恢复生命也不会死掉吗?

如果我想连接短暂,我如何使用持久的预准备语句对此进行编程?

1 个答案:

答案 0 :(得分:1)

  

那么,这又回到了原来的问题 - 如果有很多连接,我如何在连接之间共享PreparedStatement?我认为连接创建了自己的PreparedStatements。

如果这是你唯一的问题,那么从你最初的问题中就不清楚了 - 那么你根本就不用担心这个问题。 JDBC驱动程序和DB将在适用和必要时缓存它们。那不是你的责任。只需按照正常的JDBC习惯用法在尽可能短的范围内获取和关闭数据库资源。

或者,如果它是Java EE Web应用程序,请查看JPA以将JDBC样板文件减少为oneliner,并查看EJB以便将事务处理委派给容器,这样您就不需要操作(自动)提交和回滚