【问题标题】:How to do regular database cleanup in a JPA application?如何在 JPA 应用程序中进行定期数据库清理?
【发布时间】:2010-02-03 21:10:14
【问题描述】:

短背景: 我有一个定期下载文件的软件。这些下载的统计信息作为 DownloadResult 实体存储在数据库中,该实体又与代表下载作业的实体相关联。

现在我想确保数据库中仅保留固定数量的 n 个最新下载。 AFAIK 在经典(非 ORM/JPA)数据库应用程序中,这将通过存储过程完成。

在 JPA 驱动的应用程序中执行此操作的正确方法是什么?

【问题讨论】:

  • 如何给这些下载一个序列号并删除一次是 current_no
  • 简单而智能!但是,我并不想知道确切的标准(无论是序列号还是基于时间戳),但我想知道如何运行它。它读起来像:我对存储过程了解不多,而且我目前也不是很想学习它,如果它可以用“java 方式”完成的话;-)

标签: java stored-procedures jpa consolidation


【解决方案1】:

如果您想保持 Java 边界,可以尝试 Quartz http://www.quartz-scheduler.org/,如果不是必需的,您可以使用存储过程。

【讨论】:

  • 感谢您的回答。我会调查的。我已经在使用 java.util.concurrent.ScheduledExecutorService。有什么理由让我更喜欢 Quartz 而不是标准 API 中的类?
  • 其中几个:你不需要运行 scheduler.schedule(),只需设置你的日程,Quartz 有更强大的方法来设置日程,例如你可以将它设置为每个星期六晚上都有太阳。此外,您可以直接从调度程序设置阳光会话 bean 的方法会更方便
  • 我对 Quartz 的理解是它的工作原理是如何在 EJB 规范中指定的
  • 抱歉,我不太明白您所说的“如何在 EJB 规范中指定”是什么意思。你能详细说明一下吗?
  • ScheduledExecutorService 是 Java SE 特有的,甚至不确定它是否可以在 EE 中使用,在 Java EE 5 规范中它们没有高级的基于声明的调度程序。
猜你喜欢
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多