Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-连接池中的数据库连接管理_Java_Database - Fatal编程技术网

Java-连接池中的数据库连接管理

Java-连接池中的数据库连接管理,java,database,Java,Database,对于我正在学习的编程类,我想设计一个连接池。我一直在阅读这个概念,但有一件事对我来说似乎是矛盾的,那就是一个创造的连接保持开放的时间 如果我理解正确,在应用程序启动时会创建一个连接集合(池),并可以请求获得连接。如果请求连接的资源已完成其操作,则连接将返回到此池,但据我所知,它从未关闭 当我阅读其他文章时,我总是阅读,尽快关闭连接是一种很好的做法,永远不要让它们打开 在应用程序生命周期内保持连接打开是否有任何问题?我知道在回收连接时需要清除resultset和语句,但是对保持连接打开还有其他反对

对于我正在学习的编程类,我想设计一个连接池。我一直在阅读这个概念,但有一件事对我来说似乎是矛盾的,那就是一个创造的连接保持开放的时间

如果我理解正确,在应用程序启动时会创建一个连接集合(池),并可以请求获得连接。如果请求连接的资源已完成其操作,则连接将返回到此池,但据我所知,它从未关闭

当我阅读其他文章时,我总是阅读,尽快关闭连接是一种很好的做法,永远不要让它们打开

在应用程序生命周期内保持连接打开是否有任何问题?我知道在回收连接时需要清除resultset和语句,但是对保持连接打开还有其他反对意见吗


非常感谢您的投入

java中的连接池概念提供了一些连接对象来执行数据库事务。 它因服务器而异,根据应用程序的业务使用情况,我们可以配置可用于接受资源的连接对象的数量

  • 是如果Conception对象打开且空闲时间超过指定时间,则接受连接的延迟将处于休眠状态,甚至引用占用更多内存,并且有可能发生内存泄漏。 因此,通过配置池在特定时间段后关闭连接对象是一种良好的做法
  • 2.我们在JDBC语句中使用的连接是用于该事务的静态连接,而不是用于所有事务。如果我们在服务器中配置它们并动态获取引用,则很容易维护无内存泄漏并优化池,这样就不会浪费资源或被空闲对象占用。

    连接池很简单意味着提前创建、管理和维护连接对象。

    当我们谈论连接池或连接管理时,有很多事情

    1.)如果我们对数据库的频繁调用过多,
    创建/关闭连接
    的成本要高得多。最好保持一个连接池。这些连接对象然后由池管理器管理,池管理器在客户端请求时提供连接,并在确定客户端已完成连接对象时将连接返回池

    2.)当涉及到多个应用程序时,部署了更多的应用程序,并且每个应用程序都以自己的频率访问数据库,1-2个应用程序可能会每隔一小时左右访问数据库一次。然后我们每次都可以进行新的连接

    在所有情况下,更重要的是,一旦任务完成,我们就可以释放资源。永远不应该有更多的联系 打开,这是闲置了很长时间。这可能会影响应用程序性能

    大多数应用程序服务器具有两层连接池体系结构,其中池保存在应用程序服务器内存中。ApplicationServer负责创建连接对象、将它们添加到池中、将它们分配给传入请求、将使用过的连接对象取回、将它们返回到池中等

    配置/管理


    它是可配置的-最大连接数、最小连接数、最大空闲连接数等等。所有这些参数都可以由服务器管理员配置。启动时,服务器会创建固定数量(配置的最小数量)的连接对象,并将它们添加到池中。一旦所有这些连接对象都通过服务这些多个客户端请求而耗尽,那么任何额外的请求都会导致创建一个新的连接对象,并将其添加到池中,然后将该额外请求分配给服务器。

    连接池机制用于最小化创建和维护与底层数据库的连接的工作量。当服务器启动并标识连接池时,它会打开与数据库的初始指定连接数,并使用这些连接,除非所有连接都很忙;在这种情况下,它会在池中打开新数量的连接。大多数连接池提供程序现在允许您指定最小和最大连接数。所以,除非达到最大数量并且池中所有以前打开的连接都被利用,否则它会打开新的连接来服务请求并将它们放入池中。服务器不断检查空闲连接的数量,如果发现空闲连接的数量超过此参数的配置值,服务器只需关闭额外数量的空闲连接,这些连接随后会被垃圾收集。

    创建连接的速度很慢。这就是为什么你想重用它们。池连接不会关闭,它们只是返回到池中。重要的是在资源被使用完后释放资源。在池连接的情况下,当它返回到池时(即调用了
    close()
    ),它将被释放。当您指的是管理连接的应用程序服务器时,您指的是这样的内容:?如果我理解正确的话,让小型应用程序的连接保持开放并使用自建的池(如此处所述)并不是一个严重的问题:?@StefanE这是有意义的,但我说的是全局/高层的应用程序服务器,进入应用程序服务器是不同的。您已经为tomcat共享了,然后我们有Jboss、weblogic等。我支持您的观点。谢谢你的投入,我想我现在已经足够继续测试和合作了