Qual é a diferença entre GraphDatabaseService ou Neoservice em Neo4J
Pergunta
Estou aprendendo a usar neo4j, mas estou um pouco confuso com seu uso. Quando estou adicionando nós e relacionamentos, posso fazer assim:
GraphDatabaseService graphDb = new EmbeddedGraphDatabase("C:/temp/graphdb");
Transaction tx = graphDb.beginTx();
try {
org.neo4j.graphdb.Node node = graphDb.createNode();
...
Eu também poderia fazer assim:
NeoService neoService = new EmbeddedNeo("C:/temp/graphdb");
Transaction tx = neoService.beginTx();
try {
org.neo4j.api.core.Node node = neoService.createNode();
...
Qual é a diferença aqui realmente? Qual devo usar? Por que eles são 2 mecanismos diferentes? Isso é apenas evolução da API aqui? :) Quero usar a API do Metamodel e ela precisa de um neosserviço, então a escolha é clara, eu acho.
Solução
Desculpe, você deve usar o primeiro, já que, no último 1.0-RC1, o namespace foi movido. Isso é apenas nomeação, a semântica é a mesma. O segundo exemplo está desatualizado e deve ser removido da documentação oficial. Onde você encontrou aquilo?
Saúde,
/Peter Neubauer
Outras dicas
Você está no comentário da API Evolution. A API antiga é neoservice, então você não deve usar isso. Vá com seu primeiro trecho. Para obter mais informações sobre a alteração da API, consulte, por exemplo, o Release Mail para o mais recente RC:
http://www.mail-archive.com/user@lists.neo4j.org/msg02378.html
Se você usar o instantâneo mais recente (0.7-SNAPShot) do componente Meta-Model, descobrirá que ele usa a API mais recente. Para a nossa versão 1.0 (deve sair em breve agora :), vamos fazer versões que não são do SNAPShot de todos os componentes que usarão a nova API.
-E
E com relação ao modelo meta, use o componente meta-modelo (agora com o MAVEN ARTIFACTID: Neo4J-meta-modelo).
Eu também noto que a visão geral do componente http://components.neo4j.org/neo4j-seta-model/ Tem algum código de exemplo inválido e descrições. Vou tentar consertar isso.