Shell脚本中的Java DB连接池

时间:2012-04-19 13:58:39

标签: java shell connection-pooling

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

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

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

提前致谢!

3 个答案:

答案 0 :(得分:0)

如果您对数据库进行了如此多的调用,那么您应该考虑使用连接池,初始化Connections会变得很昂贵。

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

答案 1 :(得分:0)

在您的情况下,连接池可能只有有限的好处,因为您正确地说,每当JVM关闭并再次启动时,您将不得不再次创建连接池。如果您希望使用DataSource接口而不是直接创建连接,您仍然可以使用该池。如果您的处理是在单个线程中完成的,请确保连接池的大小仅为1。

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

答案 2 :(得分:0)

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

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

  3. 通过创建可重复使用的连接池,连接池可以保护您的安全,从而节省了每次创建连接的时间和资源。

  4. 使用 servlet容器还是独立应用程序并不重要。这取决于您的应用程序(Web /独立)与数据库交互的方式。

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

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

相关问题