石英站点上有关于JobDataMap
(http://quartz-scheduler.org/generated/2.2.1/html/qs-all/#page/Quartz_Scheduler_Documentation_Set%2Fco-bp_jobdatamap_tips.html%23)的提示:
仅在JobDataMap中将原始数据类型(包括字符串)存储到
避免短期和长期的数据序列化问题。
如果我的假设正确,请告诉我:
以上只是一个指导方针。我可以将非原始对象存储和检索为job data
。调度程序不会失败。
如果我存储非原始数据,则可能会遇到设计问题。一旦更改序列化的对象属性,该问题就会发生。更改对象后,我代码中的版本将与存储在石英数据库中的版本不同。
如果我找到了序列化和脱盐对象的适当版本控制机制,则可以使用Quartz Scheduler将对象存储为JobDataMap
(在http://www.javaworld.com/article/2071731/core-java/ensure-proper-version-control-for-serialized-objects.html?page=1或http://www.ibm.com/developerworks/java/library/j-5things1/index.html中提到了一些指南)
在我的项目中,作业需要运行LOTS OF COMPLEX数据映射,因此将所有这些数据作为原始数据进行传递将是一个很大的麻烦。
最佳答案
根据我的经验,使用基本类型不是必需的,这只是一个建议。但这是非常有用且安全的做法,我建议您可以使用原始类型,例如可以将所需数据存储在数据库表中并将该记录的id
放入JobDataMap
。