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 方法来解决这些问题,但似乎肯定会比它的价值更痛苦。
我正在使用 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 方法来解决这些问题,但似乎肯定会比它的价值更痛苦。