Shell脚本中的Java DB连接池

问题描述:

从shell脚本调用java代码时连接池数据库连接是否有意义,还是使用单个连接更好?每次调用shell脚本后,jvm都不会退出,每次脚本被调用时都会重新创建db pool/factory/etc?Shell脚本中的Java DB连接池

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

我的环境是一个bash外壳脚本调用的Java应用程序(main()方法),其利用弹簧JDBC和公地DBCP它1.4分贝处理和池。

在此先感谢!

在你的情况下,连接池可能只具有有限的好处,因为你说得很有道理,每当JVM关闭并重新启动,你将不得不再次创建连接池。如果您想使用DataSource接口而不是直接创建连接,您仍然可以使用该池。如果你的处理是在一个线程中完成,确保连接池的大小只有1

如果你在同一个进程使用多线程,则连接池可能更有意义,你可以受益于其功能。

+0

是的,这证实了我的要求。由于我的一些shell脚本操作有多个数据库调用,我认为池的开销仍然可以使用。 – tkofford 2012-04-19 16:16:36

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

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

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

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

  3. 连接池创建连接池可重复使用,从而节省时间和每次创建连接的资源,从这个可以节省你的。

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

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

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