2011-01-08 105 views
4

我想使用两个独立的类(即做不同的事情)对MySQL数据库执行更新 - 每10秒钟执行一次,每分钟执行一次。我在Java知识中有一些缺陷,我想知道实现它的最好方法是什么。定期用Java更新数据库

重要的是,如果与数据库的连接丢失,我需要重新连接尝试无限期地发生,并且我猜测Prepared Statements的使用会使查询更有效。数据库的连接应该一直处于打开状态还是在正在运行的更新之间关闭?也许我还需要考虑如果类实例将无限期地运行,则清除内存不足的内存。

回答

1

回答第一个问题“如何在特定间隔运行java类?”

您可以使用quartz triggers以时间间隔运行java类。

第二个问题:“如果conn丢失了怎么办?”

如果连接打开,那么在连接时间间隔内运行的类中检查,然后不尝试连接,如果丢失,则首先连接到数据库然后更新数据库。

第三个问题:“连接应该每次都打开吗?”

如果你想用非常小的时间间隔做更新,那么我认为你应该保持open.but但不知道它。可能是你应该尝试保持开放。

+0

对于多用户数据库,通常最好关闭连接,一旦您不与数据库进行主动通信。这将允许数据库的资源被释放用于其他用途。客户端系统上的连接池应尽量减少重新连接的成本。 – newdayrising 2011-01-08 13:01:03

+0

是连接池可以是解决方案。 – 2011-01-08 13:05:58

0

我会保持数据库连接打开,但是请尝试自己管理打开的连接。使用连接池库,如Apache DBCP。它允许指定一个validationQuery这在技术上是一个非常简单的SELECT请求,在实际语句之前执行,用于验证连接是否仍然存在。在我的应用程序中,这项工作非常稳定(一个应用程序全天候运行;每分钟查询一次)。