gpt4 book ai didi

Java 数据建模 - 将关系数据保存为可互操作的格式

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:55 24 4
gpt4 key购买 nike

我正在开发一个 J2SE 桌面应用程序,其中包含一些 POJO 类,这些类使用 ArrayList 表示数据以及它们之间的一对多/多对多关系。我没有使用 ORM,只是使用 Collections 管理数据并使用 Java 的 PropertyChangeListener 来触发模型事件以保持模型解耦(来自 Python 背景,DAO 模式所需的重复量和样板代码编写和维护似乎很疯狂)。

因此,为了在此应用程序中保存文件,我最初使用了序列化。这当然是一个糟糕的决定,因为对软件域对象的更新破坏了与以前保存的文件的向后兼容性。

然后我决定转向 JAX-B,但看看这个虚构的输出:

<Person>
<Todo>
<title>Task 1</title>
</Todo>
</Person>

<Category>
<title>Category 1</title>
<Todo>
<title>Task 1</title>
</Todo>
</Category>

我现在无法确定 Person 中的 Todo 与 Category 中的 Todo 是否相同。我想我可以添加一个 id 字段并跟踪最大 id 作为模型上的静态变量,但这似乎有很多样板文件,并且需要通过按 ID 搜索来填充集合。

是否有解决此类问题的标准方法,以及 Java 社区中最广泛的解决方案是什么。

最佳答案

没有“标准”方法可以做到这一点。但您可能需要考虑的一个选项是将对象序列化为 JSON。然后,您可以将 JSON 存储到文件中,或存储到 Redis 等小型键值存储中。 JSON 的一些优点?

  • 格式相当紧凑,尤其是在保存之前进行压缩时。
  • 易于解析,有大量可用的现有库来完成这项工作
  • 相当容易转发因素(例如,在您的域模型发生变化的情况下)
  • 人类可读。

一些 JSON 库(如 Jackson 2+)可以跟踪对象身份,从而使数据重复成为一个非因素。

关于Java 数据建模 - 将关系数据保存为可互操作的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14310437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com