发布于2025-01-18 21:43 阅读(868) 评论(0) 点赞(18) 收藏(1)
在我的应用程序中,我有一组在整个应用程序生命周期中保持活动的对象,我需要创建它们的历史数据库。
这些对象是使用 Hibernate 注释注释的 Java/Scala 类层次结构的实例,我在我的应用程序中使用这些注释在启动时加载它们。幸运的是,所有类都已包含时间戳,这意味着我不需要更改对象模型即可创建历史记录。
最合适的方法是什么:
使用不带注释的 Hibernate 并提供外部 xml 映射,除了主键之外,它们与注释的映射相同(现在是由前一个主键 + 时间戳组成的复合键)
使用其他类来记录历史记录(这听起来非常复杂,因为我确实有一个类的层次结构,而不是一个单独的类,并且我必须为每种类型的记录创建 HistoricalRecordClass 的子类,因为我想重新构建它)。仍然使用 Hibernate
使用完全不同的方法(请注意,我不喜欢 ORMS,这只是一个方便的问题)
一些注意事项:
存储历史记录的目的是为了让用户通过单个 GUI 只需指定日期即可访问某些数据的实时值或历史值。
您打算如何使用历史记录?最简单的解决方案是将它们序列化为 JSON 并将其记录到文件中。
我从来没有将 Hibernate xml 映射与 Hibernate 注释结合起来,但如果它有效,听起来比携带两个并行对象模型更有吸引力。
如果您需要能够在任何时间点重新创建应用程序状态,那么您或多或少只能将它们写入数据库(因为随机访问速度很快)。您可以作弊,创建一个“历史记录”表,其中包含 id + timestamp + type 的复合键,然后创建一个“json”字段,您只需将内容整理并保存即可。这将有助于 a) 携带一个历史记录表而不是一堆克隆表,并且 b) 在架构发生变化时为您提供一些灵活性(即利用 JSON 的开放架构特性)
但由于它是具有不同使用模式的存档数据(您只是读取/写入整个记录),所以我会考虑采用其他方式来存储它,而不是使用与实时数据相同的严格模式。
这是“一次写入”范式的一个很好的应用...您有 Hadoop 吗?;)
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/695226/d380a344c432a814db55/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!