我正在开发一个带有一些 POJO 类的 J2SE 桌面应用程序,这些 POJO 类使用 ArrayLists 表示数据和它们之间的一对多/多对多关系。我没有使用 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>
我现在无法发现Todo
来自 Person 的 Todo 与来自 Category 的 Todo 相同。我想我可以添加一个id
字段并跟踪最大 id 作为模型上的静态变量,但这似乎是很多样板文件,并且可以通过按 ID 搜索来填充集合。
是否有解决此类问题的标准方法,以及 Java 社区中最广泛的解决方案是什么。