快速摆动问题:需要在关闭时关闭我的数据库

时间:2009-03-30 09:21:29

标签: java swing database-connection

我一直在构建一个测试应用程序,该应用程序可以使用直到最近还没有UI的数据库。我现在加一个。问题是,JFrame是在另一个线程中启动的,我需要我的数据库连接在该线程关闭时关闭(当UI关闭时,我应该说)。我该怎么做?

此外,如果应用程序崩溃或强行关闭,应用程序的数据库连接(在本例中为嵌入式数据库)会发生什么?我听说未闭合的连接导致资源泄漏。如果发生这种情况,我还能做些什么来清理?

2 个答案:

答案 0 :(得分:4)

您可以向运行时系统添加shutdown hook。这是一个在关闭虚拟机时将被触发的线程。在该线程中,您可以关闭所有数据库连接和其他关键资源。

答案 1 :(得分:3)

  1. 如果用户尝试关闭您的JFrame,则会触发WindowClosingEvent。因此,在此方法中,您可以关闭连接。
  2. 您的DBMS使用连接池。如果未正确关闭连接,则此连接池将填充未使用的连接 如果池已满并且需要新连接,那就太糟糕了。该应用程序将无法运行。用户等待并再次尝试(当他等待,一个连接可能被关闭或被杀死)或手动重启数据库以便所有连接都丢失。
    DBMS在预定义时间后关闭所有未使用的连接。这次指定了哪个参数,您可以在DBMS手册中找到它。
  3. 除了您的评论之外:您无法确保自己有足够的时间来清理连接。可能您的应用程序被您的系统或其他任何东西杀死。因此:尝试尽快清理您的连接 一旦丢失连接对象,只能由DBMS删除未使用的连接。