当前位置: 首页 > 面试题库 >

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

鲜于玮
2023-03-14
问题内容

什么是监视数据库连接的最佳/良好/最佳方式。我正在编写秋千应用程序。我想要做的是每隔一段时间检查一次与数据库的连接。我已经尝试过这样的事情。

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

            } catch (HibernateException ex) {
            } finally {
                session.close();
            }

但这是行不通的。我想到的第二个问题是此会话关闭将如何影响其他查询。


问题答案:

使用连接池,例如c3p0或dbcp。您可以将此类池配置为监视池中的连接-
在将连接传递给Hibernate之前,将其返回或定期接收之后。如果连接断开,则透明地将其关闭,丢弃并打开一个新的池-无需注意。

数据库连接池更适合于同时打开多个连接的多用户,数据库繁重的应用程序,但是我认为这并不过分。绑定到最大1个连接的池应该可以正常工作。

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

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



 类似资料:
  • 问题内容: 我正在寻找检查与Mongo DB的连接的最佳方法。情况:客户端向服务器发出请求(api)。服务器返回所有数据库的状态。 最好的方法是什么? 问题答案: 使用了Java中,所有你需要的信息在这里… http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java- driver/

  • 问题内容: 您能否解释一下已经在各种servlet实现中实现的两种方法: 每个连接线程 每个请求的线程 以上两种策略中的哪一种可以更好地扩展,为什么? 问题答案: 以上两种策略中的哪一种可以更好地扩展,为什么? 每个请求线程的可伸缩性比每个连接线程的可伸缩性更好。 Java线程非常昂贵,通常每个线程都使用1Mb的内存段,无论它们是活动的还是空闲的。如果为每个连接提供自己的线程,则该线程通常在连接的

  • 问题内容: 有人知道如何在hibernate配置中添加另一个数据源,以及如何在自己的DAO中将Spring配置为其自动注入该数据源吗? 这是我的带有一个数据源的代码,可以完美运行,但是我不知道如何添加另一个数据源。我想添加另一个数据源,该数据源是具有与实际数据库不同的表的数据库。 HIBERNATE CONF 道例 问题答案: 好。我找到了另一个解决方案,并且使用了相同的方法:添加另一个dataS

  • 问题内容: 有什么方法可以检查给定线程是否正在休眠? 问题答案: 您可以呼叫并检查状态是否为。 请注意,但这并不一定意味着调用的线程也可能正在调用中或其他类似的事件中等待。

  • 问题内容: 我该怎么做? 我以为,我可以从数据库中读取某些内容,但是看起来太多了,是否有类似的东西? 问题答案: 您需要做的就是启动一个应用程序,如果未连接该应用程序将失败。您可以尝试的其他方法是在shell上尝试以下操作-

  • 主要内容:1 什么是Java 线程休眠,2 Java sleep()方法语法,3 Java sleep()方法例子1 什么是Java 线程休眠 Thread类的sleep()方法 用于使线程休眠指定的时间。 2 Java sleep()方法语法 Thread类提供了两种使线程休眠的方法: public static void sleep(long miliseconds)throws InterruptedException public static void sleep(long milis