Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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_Hibernate_Session_Connection_C3p0_Dbcp - Fatal编程技术网

Java 休眠检查线程中与数据库的连接(每个时间段)

Java 休眠检查线程中与数据库的连接(每个时间段),java,hibernate,session,connection,c3p0,dbcp,Java,Hibernate,Session,Connection,C3p0,Dbcp,监视数据库连接的最佳/良好/最佳方法是什么。 我正在编写swing应用程序。我想让它做的是检查每个时间段与数据库的连接。我试过这样的东西 org.hibernate.Session session = null; try { System.out.println("Check seesion!"); session = HibernateUtil.getSessionFactory().openSession

监视数据库连接的最佳/良好/最佳方法是什么。 我正在编写swing应用程序。我想让它做的是检查每个时间段与数据库的连接。我试过这样的东西

org.hibernate.Session session = null;
            try {
                System.out.println("Check seesion!");
                session = HibernateUtil.getSessionFactory().openSession();

            } catch (HibernateException ex) {
            } finally {
                session.close();
            }
但那不行。
我想到的第二个问题是,此会话关闭将如何影响其他查询。

使用或之类的连接池。您可以将这样的池配置为监视池中的连接—在将连接传递到Hibernate之前,在接收回连接之后,或者定期地监视连接。如果连接断开,池将透明地关闭它,丢弃并打开一个新连接,而您不会注意到

数据库连接池更适合于同时打开多个连接的多用户、数据库密集型应用程序,但我不认为这是一种过分的做法。绑定到最多1个连接时,池应该可以正常工作

更新:每次尝试访问数据库时,Hibernate都会询问数据源(连接池)。如果没有可用的活动连接(例如,因为数据库关闭),这将引发异常。如果您想提前知道数据库何时不可用(即使用户没有做任何事情),不幸的是,您需要一个后台线程偶尔检查一下数据库


但是,在某些配置中,仅仅打开会话可能是不够的。您最好运行一些虚拟的廉价查询,如
select1
(在原始JDBC中)。

使用连接池,如或。您可以将这样的池配置为监视池中的连接—在将连接传递到Hibernate之前,在接收回连接之后,或者定期地监视连接。如果连接断开,池将透明地关闭它,丢弃并打开一个新连接,而您不会注意到

数据库连接池更适合于同时打开多个连接的多用户、数据库密集型应用程序,但我不认为这是一种过分的做法。绑定到最多1个连接时,池应该可以正常工作

更新:每次尝试访问数据库时,Hibernate都会询问数据源(连接池)。如果没有可用的活动连接(例如,因为数据库关闭),这将引发异常。如果您想提前知道数据库何时不可用(即使用户没有做任何事情),不幸的是,您需要一个后台线程偶尔检查一下数据库


但是,在某些配置中,仅仅打开会话可能是不够的。您最好运行一些虚拟的、廉价的查询,如
select1
(在原始JDBC中)。

万一连接丢失超过5分钟,该怎么办。我如何告知用户界面?非常感谢!!工作很好。我自己也在处理这个问题。数据库关闭后,如何告诉
c3p0
关闭/断开我的Hibernate会话?另外,请查看连接丢失超过5分钟时的情况。我如何告知用户界面?非常感谢!!工作很好。我自己也在处理这个问题。数据库关闭后,如何告诉
c3p0
关闭/断开我的Hibernate会话?也请看