【问题标题】:Database Connection Pooling (w/ Java)数据库连接池(使用 Java)
【发布时间】:2011-12-31 16:55:48
【问题描述】:

我想知道您对这种方法是否可以实际实施的看法。我对数据库池非常了解,所以请原谅我的任何误解。我有多个类调用 dbData 类(它连接到数据库并具有帮助函数,例如经常使用获取和更新等)。我需要在 dbData 类中保留所有 get 和 update 函数,但保留一个我可以重复使用的活动连接池。这意味着我将多次实例化 dbData 类,每次检查是否存在适当的连接,如果不存在,则创建一个新的并将其放入池中。

我的问题是您将如何以及在何处存储此池。如果 dbData 不会被多次实例化并保留一个持久池对象,我也许可以完成此操作。但就我而言,我有多个 dbData 实例,它们都应该连接到一个池。我想过序列化池对象,但这似乎很荒谬。这可能吗(如图所示)?看来我在这个设计的面向对象部分遇到了麻烦。

应用程序使用 Class1 和 Class2 的多线程。

如果可能,我不想使用任何外部库。

【问题讨论】:

  • 您是在容器环境中运行它(例如在 Tomcat、JBoss、..上)还是作为独立的 Java 应用程序运行?
  • 您为什么要避免使用现有的库/方法?这是一个通过库或容器从根本上解决的问题。如果您下定决心重新发明它,请查看基于commons-poolcommons-dbcp,了解如何重新实现它的想法:/
  • 独立 Java 应用程序。我不想使用现有的库来保持简单。我阅读了一些关于 Java DBCP 的 IBM 文档,它基本上看起来只是一个带有连接的 HashSet。我不认为我需要全力以赴去获得一个巨大的图书馆。
  • 我好像忘记了静态变量。即使有多个 dbData 实例,我也会将此池设为静态并继续查询连接。
  • 保持简单是使用其他库,而不是自己编写。

标签: java database jdbc database-connection connection-pooling


【解决方案1】:

如果它是一个独立的应用程序,那么我将创建一个带有静态集合的单独服务,该集合保持连接并进行所有处理。然后 dbData 类可以调用静态方法来获取连接。然后,如果需要,服务本身会负责创建新连接。如果您的 dbData 实例并行运行,则必须考虑同步访问(如果需要)。

【讨论】:

  • 在您实现它的同时实现它 - 一个静态同步池。我只是觉得使用一个 7MB 的库来做一个你可以通过一些思考自己实现的东西是一种浪费。谢谢。
  • 这可能是一种浪费,但另一方面是重新发明轮子? :-) 当然这很有趣,但可能会导致其他人已经犯过的错误。
  • 你是对的。由于这将用于商业目的,因此还有一个许可问题。
  • commons-dbcp 许可证不会有任何问题。
【解决方案2】:
猜你喜欢
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 2012-11-27
  • 1970-01-01
  • 2021-09-27
  • 2010-10-23
  • 2014-04-09
相关资源
最近更新 更多