删除一些数据作为定期/调度作业在Java中

时间:2012-09-10 18:37:14

标签: java spring hibernate jboss scheduler

我在使用Spring和Hibernate框架的Java项目中工作。使用的数据库是Oracle,应用服务器是JBoss 4,OS是Unix。

我必须编写一个逻辑,删除超过180天的所有表中的数据。特定表中有一个日期列,我必须确定它是否超过180天。如果是的话,我将不得不删除该表中的所有行以及任何其他表中的任何关联行。我可以使用hibernate从表中删除这些数据。

此功能将被安排,即删除逻辑将在某个周期性时间调用,可能是每天下午3:00,确切的时间客户端将很快通知我。这个逻辑必须与我通常做的应用程序战争分开我的实际项目源代码。

我在编写将删除数据的持久性相关代码时没有任何问题,但我对如何将这个逻辑单独放在JBoss中感到困惑。我要把jar代码放到JBoss中吗?还有如何调用删除逻辑?我是否需要配置/编写一些能够完成这项工作的调度程序?

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

看看Quartz。它是一个相对容易使用的Java调度程序。您应该能够非常快速地启动并运行它。

答案 1 :(得分:0)

Java / Hibernate不适合“natch”样式处理:当您尝试使用Hibernate进行“事务”更新时,Hibernate会出现严重的性能和复杂性问题。

最好的方法是编写一个执行工作的SQL脚本,然后使用O / S任务调度程序安排执行:cron if * nix,at if windows。您将能够在很短的时间内完成任务,并且它将胜过任何java / hibernate方法,尤其是因为您可以控制锁定,提交等。

我见过的每一个生产装置都是这样的,它们都是通过cron来完成的。

你可以用任何语言做任何事情,但仅仅因为你可以用语言/技术做某事,并不意味着它是个好主意。