国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Neo4j: 使用 GraphAware UUID 給新節(jié)點和關系自動添加UUID

genefy / 1664人閱讀

摘要:更新的自動生成方式在結合使用的情況下當通過創(chuàng)建節(jié)點的時候無法返回節(jié)點的因為其是作為事務回調異步中生成的無法同步返回該方式已經被的生成策略替代我們知道的內部是會重用的因此無法使用其作為業(yè)務對象的唯一標識因此我們在這里給對象自動添加屬性作為

更新: 2018-04-21
GraphAware 的UUID自動生成方式在結合Spring Data Neo4j使用的情況下, 當通過Neo4jRepository.save()創(chuàng)建節(jié)點的時候, 無法返回節(jié)點的UUID. 因為其UUID是作為事務回調(異步)中生成的, 無法同步返回.

該方式已經被Spring Data Neo4j 5.0的ID生成策略(UuidStrategy)替代.

import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.typeconversion.Convert;
import org.neo4j.ogm.id.UuidStrategy;
import org.neo4j.ogm.typeconversion.UuidStringConverter;

import java.util.UUID;

@NodeEntity
@Getter
@Setter
public class User {
    @Id
    @GeneratedValue(strategy = UuidStrategy.class)
    @Convert(UuidStringConverter.class)
    @NonNull
    private UUID id;
}

我們知道Neo4j的內部ID是會重用的, 因此無法使用其作為業(yè)務對象的唯一標識. 因此我們在這里給對象自動添加"uuid"屬性作為唯一標識.

獨立服務器

需要 GraphAware Neo4j Framework 和 GraphAware Neo4j UUID 兩個jar包, 下載地址:

下載頁面
https://graphaware.com/produc...

框架庫
http://products.graphaware.co...
UUID庫
http://products.graphaware.co...

保證 graphaware-server-community-all-3.3.2.51.jargraphaware-uuid-3.3.2.51.14.jar 兩個庫存在于 Neo4j 安裝目錄的 plugins 子目錄之下. 并重啟 Neo4j 服務器.

conf/neo4j.conf配置文件中添加如下設置:

com.graphaware.runtime.enabled=true

#UIDM becomes the module ID:
com.graphaware.module.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper

#optional, default is uuid:
com.graphaware.module.UIDM.uuidProperty=uuid

#optional, default is false:
com.graphaware.module.UIDM.stripHyphens=false

#optional, default is all nodes:
#com.graphaware.module.UIDM.node=hasLabel("Label1") || hasLabel("Label2")

#optional, default is no relationships:
#com.graphaware.module.UIDM.relationship=isType("Type1")
#com.graphaware.module.UIDM.relationship=com.graphaware.runtime.policy.all.IncludeAllBusinessRelationships

#optional, default is uuidIndex
com.graphaware.module.UIDM.uuidIndex=uuidIndex

#optional, default is uuidRelIndex
com.graphaware.module.UIDM.uuidRelationshipIndex=uuidRelIndex
配置 修改配置文件

復制插件到plugins目錄

嵌入模式 添加Maven依賴

  com.graphaware.neo4j
  runtime
  LATEST


  com.graphaware.neo4j
  uuid
  3.3.2.51.14

然后在程序中如下使用

創(chuàng)建配置文件
dbms.logs.debug.level=DEBUG
com.graphaware.runtime.enabled=true
com.graphaware.module.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper
com.graphaware.module.UIDM.uuidProperty=uuid
com.graphaware.module.UIDM.stripHyphens=false
com.graphaware.module.UIDM.uuidIndex=uuidIndex
com.graphaware.module.UIDM.uuidRelationshipIndex=uuidRelIndex
public void init() throws Exception {}
  graphDb = new GraphDatabaseFactory()
      .newEmbeddedDatabaseBuilder(DATABASE_DIRECTORY)
      .setConfig(GraphDatabaseSettings.pagecache_memory, "512M")
      .setConfig(GraphDatabaseSettings.string_block_size, "60")
      .setConfig(GraphDatabaseSettings.array_block_size, "300")
      .setConfig(GraphDatabaseSettings.store_internal_log_level, "DEBUG")
      .loadPropertiesFromFile(path.toAbsolutePath().toString())
      .setConfig(bolt.enabled, "true")
      .setConfig(bolt.type, "BOLT")
      .setConfig(bolt.listen_address, "0.0.0.0:7687")
      .setConfig(bolt.encryption_level, BoltConnector.EncryptionLevel.OPTIONAL.toString())
      .setConfig(ShellSettings.remote_shell_enabled, Settings.TRUE)
      .newGraphDatabase();

  registerFunction(graphDb, ga.uuid.NodeUuidFunctions.class);
  registerFunction(graphDb, ga.uuid.RelationshipUuidFunctions.class);
  Util.registerShutdownHook(graphDb);

  GraphAwareRuntime runtime = GraphAwareRuntimeFactory.createRuntime(database);  // database 是一個 GraphDatabaseService 實例
  UuidModule module = new UuidModule("UUIDM", UuidConfiguration.defaultConfiguration());
  runtime.registerModule(module);
  runtime.start();
}
/**
 * 注冊用戶定義函數(shù)
 *
 * @param db
 * @param procedures
 * @throws KernelException
 */
public static void registerFunction(GraphDatabaseService db, Class... procedures) throws KernelException {
    Procedures proceduresService = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(Procedures.class);
    for (Class procedure : procedures) {
        log.info("=== register function: {}", procedure.toString());
        proceduresService.registerFunction(procedure);
    }
}
參考資料

https://github.com/graphaware...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17683.html

相關文章

  • 在選擇數(shù)據庫的路上,我們遇到過哪些坑?(2)

    摘要:有關進行調用的進一步危害,請觀看這段有關安全漏洞的討論。索引索引基本上會復制數(shù)據庫中的信息片段,這樣有利于它迅速找到節(jié)點。不管怎樣,它都能事務性地依次通過數(shù)據庫中的所有節(jié)點。 【編者按】你會怎么選擇數(shù)據庫,是關系數(shù)據庫、XML 數(shù)據庫、資源描述框架(RDF),還是圖形數(shù)據庫?本文的第1部分深入而生動地探討了各種選擇。在第2部分,將深入介紹使用 Neo4j 的注意點。文章系國內 ITOM...

    lavnFan 評論0 收藏0
  • Neo4j: 遷移MySQL的數(shù)據到Neo4j

    摘要:目的用于社交關系的管理和維護社交關系是一種網狀的關系圖難于維護這樣的數(shù)據安裝和配置需要滿足下面幾個條件安裝插件安裝驅動安裝插件設置一下環(huán)境變量安裝插件和驅動把復制到安裝目錄中的子目錄下重啟如何使用使用存儲過程加載驅動執(zhí)行查詢 目的: 用于社交關系的管理和維護. 社交關系是一種網狀的關系圖, RDBMS難于維護這樣的數(shù)據. 安裝和配置 需要滿足下面幾個條件 安裝 neo4j-apoc-...

    Chaz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<