我需要持久化对象,并希望尽可能保持数据类的清洁。持久化类不具有任何业务逻辑代码,而只包含具有getter / setter的数据。
我目前正在使用Observer模式实现解决方案。每次修改一个Observable持久化对象时,它都会向一个负责持久性的Observer对象发出一条消息。这样,持久化对象的唯一约束是“Observable”。它保持清洁。
另一个解决方案(可能更好?)将实现一些DAO模式,我不太了解它的工作方式。也许它看起来像persistedObject.save();
或persistedObject.readById(id);
。但这意味着我必须定义一些DAO接口,然后在每个持久化类中实现read / create / update / delete方法
答案 0 :(得分:1)
这个问题有很多很多很多的答案,数据序列化或持久性是软件工程中的核心问题。选项包括使用数据库,内存映射文件,二进制和文本格式等。
我个人最喜欢的快速持久对象是GSON,但是你的用例会决定什么最适合你。
你提到了想要持久化Java对象的设计模式,虽然这些模式和库一样多,但这里有几个一般建议:
transient
关键字用于重建对象所不需要的任何字段StubPerson
POJO,并且只有存根的值有效时,才能从Person
构造StubPerson
个对象答案 1 :(得分:0)
我不知道它是否适合你,但由于你只有bean类,你可以使用Java persistence api。
答案 2 :(得分:0)
DAO模式是管理数据访问和持久性的最佳模式,因为它是专门为此设计的。
考虑到您的需求,您可能需要将其与某些工厂模式相结合,以便管理不同的实现(持久性适配器)。
我不知道您的要求,但如果您的应用程序可以被许多人同时使用,您将不得不关心并发访问并定义策略(事务,锁定等等...否则人们将覆盖数据彼此)。
关于您的问题,我建议JDO(data nucleus作为实施方案),但学习曲线可能过于昂贵,无法满足您的有效需求。