嵌入式设置,在OrientDb中的OType中设置链接

时间:2015-06-17 07:22:24

标签: java orientdb

有人可以给我一个在orientdb中使用上述类型作为索引值的示例代码。我使用 OrientDb-2.0.5 的文档API。
嵌入式设置和链接集之间有什么区别?如何在它们之间进行选择?它们之间是否存在性能差异?

1 个答案:

答案 0 :(得分:1)

首先,我们需要知道 OrientDB 中的以下含义(此信息可用here):

  • 嵌入式记录记录包含在所有者中。包含的记录没有RecordId
  • 链接指向其他记录的链接

这个例子将澄清它:

private static void orientDBCollections() throws IOException {
    dropDBIfExists(URL, USER);
    createDBIfDoesNotExist(URL, USER);

    OPartitionedDatabasePool pool = new OPartitionedDatabasePool(URL, USER, USER);
    try (ODatabaseDocument db = pool.acquire()) {
        OSchema schema = db.getMetadata().getSchema();
        OClass classA = schema.createClass("A");
        OClass classB = schema.createClass("B");
        classA.createProperty("embMap", OType.EMBEDDEDMAP, classB);
        classA.createProperty("linkMap", OType.LINKMAP, classB);
        classA.createProperty("embSet", OType.EMBEDDEDSET, classB);
        classA.createProperty("linkSet", OType.LINKSET, classB);

        ODocument docA = new ODocument("A");
        ODocument docB = new ODocument("B");
        docB.field("name", "nanana");

        Map<String, ODocument> map = new HashMap();
        map.put("thekey", docB);
        docA.field("embMap", map, OType.EMBEDDEDMAP);
        docA.field("linkMap", map, OType.LINKMAP);

        Set<ODocument> set = new HashSet();
        set.add(docB);
        docA.field("embSet", set, OType.EMBEDDEDSET);
        docA.field("linkSet", set, OType.LINKSET);

        docA.save();
    } finally {
        pool.close();
    }
}

在此之后,从Studio,控制台等从一个中选择... ...你就会理解。