0

当从 shell 脚本调用 java 代码时,连接池数据库连接是否有意义,或者使用单个连接更好?每次调用 shell 脚本后 jvm 不会退出,每次调用脚本时都强制重新创建数据库池/工厂/等?

例如,我有一个调用 shell 脚本的外部进程,然后这个 shell 脚本调用一个 java 类,该类根据调用的操作执行 1 个或多个 DB 操作(查询、插入、更新、删除。)。这是一个独立的批处理过程,它不使用像 tomcat 这样的 servlet 容器。我的外部进程一遍又一遍地调用这个 shell 脚本。

我的环境是一个调用 java 应用程序(main() 方法)的 bash shell 脚本,它利用 spring jdbc 和 commons-dbcp 1.4 进行数据库处理和池化。

提前致谢!

4

3 回答 3

0
  1. 打开数据库连接在资源和性能(响应时间)方面都是非常昂贵的事情。

  2. 你不使用连接池时,你获取连接,使用它然后关闭它。每次需要数据库交互时都会重复此操作。

  3. 连接池通过创建一个可以重复使用的连接池来避免这种情况,从而节省每次创建连接的时间和资源。

  4. 无论您使用servlet 容器还是独立应用程序都没有关系。这取决于您的应用程序(网络/独立)与数据库交互的方式。

  5. 如果您的应用程序有很多涉及并发数据库访问的并行操作,那么使用连接池将非常有用。

  6. 因此,连接池的选择和相关性取决于应用程序与 DB 交互的方式,无论其是 Web 应用程序还是独立的。

于 2012-04-19T14:29:59.053 回答
0

如果您对数据库有如此多的调用,您应该考虑使用连接池,初始化连接变得昂贵。

否则,对于(或如果)您可以序列化正在运行的任务的批处理,一个 Connection 就足够了。Spring-JDBC 还提供了用于测试的单个连接“池”工厂对象,它也应该适用于您(因此您不必处理样板)。

于 2012-04-19T14:06:28.453 回答
0

在您的情况下,连接池可能只有有限的好处,因为您正确地说,每当 JVM 关闭并重新启动时,您都必须再次创建连接池。如果您想从使用DataSource接口而不是直接创建连接中受益,您仍然可以使用池。如果你的处理是在单线程中完成的,请确保连接池的大小只有 1。

如果您在同一进程中使用多个线程,那么连接池可能更有意义,您可以从它的功能中受益。

于 2012-04-19T14:08:01.457 回答