Android - Couchbase lite - DAO - MyClass 扩展文档

Android - Couchbase lite - DAO - MyClass extends Document

我正在使用 Couchbase lite 开发 Android 应用程序。 我应该让 classes 扩展 com.couchbase.lite.Document 吗?

优点:DAO 集成在 class。

缺点:- 每个对象都链接到一个文档,如果我们想要一个新对象,我们必须在 couchbase 中创建一个新文档吗? - 还有什么吗?

例如:

public class UserProfile extends Document {

    public UserProfile (Database database, String documentId);

    public Map<String, Object> getProperties();

    public boolean isModified();

    public boolean update() throws CouchbaseLiteException {
        if (isModified()) {
            super.putProperties(getProperties());
            return true;
        }
        else
            return false;
    }
}

我不建议扩展文档。相反,要么只使用地图,要么使用 Jackson JSON 库之类的东西来创建 POJO。我通常会创建一个简单的助手 class 来包装数据库操作(包括复制,如果您正在使用它的话)。

在我的脑海中,我不会这样做,因为 subclassing 不适合您检索文档的某些方式,文档是有点重量级的对象,并且首选更新方式考虑了冲突的可能性,这会困难得多。 (有关最后一点的讨论,请参阅 this blog post。)

我从未尝试通过子classing 方法来解决这些问题,但似乎肯定会比它的价值更痛苦。