有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何连接到数据库

我在开发一个应用程序时遇到了这个问题。。。我有一个GUI,里面有很多按钮。。。每个按钮都执行一些操作,如插入、选择、更新、删除、查看等。。。在数据库上。我的问题是

在这个特定类的整个生命周期中打开一个连接,在这个类不再使用时关闭一个连接是否更好。。。或者我应该在运行中打开一个DB连接,并立即关闭操作

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

如果我选择第二种情况,它是否会对频繁打开和关闭连接造成任何开销。。。假设用户只能在此屏幕上执行DB操作(假设)

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

我真的不知道,如果我错了,请纠正我。。。在内存方面,建立数据库连接是否会给系统带来显著的开销


共 (4) 个答案

  1. # 1 楼答案

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

    1. 单用户数据库/嵌入式数据库:该数据库是应用程序独有的
    2. 单用户应用程序:您的应用程序是桌面应用程序
    3. 多用户应用程序:典型的web应用程序

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

    三个人。你肯定希望有连接池,并且只在你真正需要的时候获得其中一个连接池

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

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

  2. # 2 楼答案

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

  3. # 3 楼答案

    Is it better to have a single connection open for the entire lifetime of this particular class and close when this class is no longer in use ... or should i open a DB Connection on the fly and close immediately the operation is performed...

    总是需要打开连接并完成所有事务,一旦完成事务,提交然后关闭

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

    从甲骨文的MySQL页面

    What is Connection Pooling?

    Connection pooling is a technique of creating and managing a pool of connections that are ready for use by any thread that needs them.

    This technique of "pooling" connections is based on the fact that most applications only need a thread to have access to a JDBC connection when they are actively processing a transaction, which usually take only milliseconds to complete. When not processing a transaction, the connection would otherwise sit idle. Instead, connection pooling allows the idle connection to be used by some other thread to do useful work.

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

    请记住,数据库连接应该在较短的时间内(或由于超时而处于最佳状态)打开,这样您的SQL查询对于连接到数据库、获取结果和非常高效地返回对象来说应该是非常理想的

    希望这对你的情况有所帮助

  4. # 4 楼答案

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