使用 POJO 的簡單 CRUD
Ektorp 的一大優點是,它提供了類似 ORM 的功能,直接開箱即用。這個例子將引導你建立一個簡單的 POJO 並對其進行標準的 CRUD 操作
建立一個簡單的 POJO
首先,我們定義 POJO 如下
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
@JsonProperty("_id") private String id;
@JsonProperty("_rev") private String revision;
private String name;
public String getId() {
return id;
}
public String getRevision() {
return revision;
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setRevision(String revision) {
this.revision = revision;
}
public void setName(String name) {
this.name = name;
}
}
那麼,這裡發生了什麼?註釋 @JsonInclude(JsonInclude.Include.NON_NULL)
告訴 jackson 不要將空欄位序列化為 JSON。因此,例如,如果 id 屬性為 null,則根本不會在生成的 JSON 中具有 id 屬性。
另外,@JsonProperty("_id")
和 @JsonProperty("_rev")
註釋是指令,通知序列化器/反序列化器將這些值對映到的 JSON 屬性。CouchDB 中的文件必須同時具有_id 和_rev 欄位,因此你打算在 CouchDB 中保留的所有 POJO 必須包含如上所述的 id 和 revision 屬性。只要你不更改註釋,你就可以在 POJO 中以不同方式命名你的屬性。例如,
@JsonProperty("_id") private String identity;
@JsonProperty("_rev") private String version;
將新例項持久儲存到 CouchDB
現在,在資料庫中建立一個全新的文件,如下所示,假設你有一個有效的 CouchDbInstance 例項,並且你希望將該文件儲存在名為 person 的資料庫中 **
CouchDbConnector connector = dbInstance.createConnector("person", true);
Person person = new Person();
person.setName("John Doe");
connector.create(person);
現在,在這種情況下,CouchDB 將自動為你建立新的 ID 和修訂版。如果你不想要這個,你可以使用
connector.create("MyID", person);
載入,更新和刪除文件
假設你已準備好 CouchDBConnector 例項,我們可以按如下方式載入 POJO 的例項
Person person = connector.get(Person.class, "id");
然後我們可以操作它,並按如下方式更新它
person.setName("Mr Bean");
connector.update(person);
請注意,如果沙發中文件的修訂版與你要傳送的文件的修訂版不匹配,則更新將失敗,你需要從資料庫載入最新版本並相應地合併你的例項。
最後,如果我們希望刪除例項,它就像它一樣簡單
connector.delete(person);