【问题标题】:How should i have my connection to the database我应该如何连接到数据库
【发布时间】:2010-09-06 13:13:29
【问题描述】:

嗨,

我正在开发一个遇到此问题的应用程序...我有这个 GUI,其中有很多按钮...每个按钮执行一些操作,例如 INSERT 、 SELECT 、 UPDATE 、 DELETE 、 VIEW 等...在数据库上。我的问题是……

最好在这个特定类的整个生命周期内打开一个连接并在不再使用这个类时关闭...或者我应该即时打开一个数据库连接并立即关闭正在执行操作...

如果我选择第一种情况,如果我们需要做一些处理,然后我们才能执行操作......在这种情况下,连接将是空闲的......

如果我选择第二种情况,它不会对频繁打开和关闭连接造成任何开销...鉴于用户只能从此屏幕执行数据库操作(比如说)...

如果我们需要多个连接,连接池是不是最好的选择...?

我实际上不知道,如果我错了,请纠正我...建立数据库连接是否会给系统带来任何重大的内存开销...?

【问题讨论】:

    标签: java database connection


    【解决方案1】:

    一般来说,建议尽可能晚地打开连接,然后尽快关闭它。是的,连接池在大多数主要系统中都可以正常工作,与实际调用数据库相比,获得新连接的成本几乎可以忽略不计。

    【讨论】:

      【解决方案2】:

      为整个系统打开一个连接会更好吗? 这个特定类的生命周期和 当这个类不再在时关闭 使用...或者我应该打开一个数据库 即时连接并关闭 立即操作 执行...

      始终需要打开连接并执行所有事务,一旦完成事务,提交然后关闭。

      在并发系统中,为应用程序的每个会话调用创建工作线程,因此您不希望为每个工作线程创建每个 JDBC 事务连接。解决方案是连接池

      来自 Oracle 的 MySQL 页面

      什么是连接池?

      连接池是一种技术 创建和管理一个池 可供使用的连接 任何需要它们的线程。

      这种“池化”技术 连接是基于以下事实 大多数应用程序只需要一个线程 有权访问 JDBC 连接 当他们正在积极处理 交易,通常只需要 毫秒完成。没有的时候 处理交易时, 否则连接将处于空闲状态。 相反,连接池允许 某些人使用的空闲连接 其他线程做有用的工作。

      本质上,连接池允许空闲连接可以被另一个线程使用,而不是为每个线程创建连接。

      请记住,数据库连接应该在很短的时间内打开(或最佳时间,由于超时),这样您的 SQL 查询对于连接到数据库、获取结果和返回的连接应该是非常最佳的对象非常有效。

      希望这对您的情况有所帮助。

      【讨论】:

        【解决方案3】:

        在应用程序中处理数据库时,您可能会考虑以下两点:

        1. 单用户数据库/嵌入式数据库:该数据库专属于您的应用程序。
        2. 单用户应用程序:您的应用程序是桌面应用程序。
        3. 多用户应用程序:典型的 Web 应用程序。

        对于 1. 和 2. 为应用程序保留一个独占连接是没有意义的。只要确保事务逻辑以正确的方式工作。也不要忘记优雅地处理连接超时。

        对于 3. 您肯定希望拥有连接池,并且仅在您真正需要的时候才获得一个池连接。

        关于开销:我认为这不是内存开销,而是可能的性能损失,尤其是在使用远程数据库时,因为每次执行“新”连接时都需要初始化新的连接资源。

        此外,根据您使用的框架/库,您可能想了解它们如何支持您的数据库编程。

        【讨论】:

          【解决方案4】:

          Ravi,也许对你来说最好的答案都不是。您可以使用现有的 Java 框架,例如 Spring (http://www.springsource.org/) 来为您处理数据库连接。使用框架可以让您主要关注业务逻辑;该框架处理大部分样板数据库连接。如果您在完成应用程序的第一次迭代后发现数据库组件运行缓慢,则可以对其进行优化。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-18
            相关资源
            最近更新 更多