使用restapifacade在Play框架中对Neo4j进行Java对象映射

时间:2015-03-03 11:55:12

标签: java playframework neo4j cypher spring-data-neo4j

有一个Country类:

public class Country { 
    public int id;  
    public String name;
    public String locale;
}

我必须插入neo4j。

我在做什么:

public void insert(Country country) {
        engine.query("create (n:Country {name:'"+country.name+"',id:"+country.id+",locale:'"+country.locale+"'})",null);
}

但是我想把对象直接放到带有标签的neo4j上。

我正在使用play框架2.3.7与java 1.8和libraryDependencies是

"org.neo4j" % "neo4j-rest-graphdb" % "2.0.1",
  "com.sun.jersey" % "jersey-server" % "1.7",
  "com.sun.jersey" % "jersey-core" % "1.7",
  "com.sun.jersey" % "jersey-json" % "1.7",

1 个答案:

答案 0 :(得分:3)

您可以使用spring-data-neo4j来满足您的要求。详细步骤

1.将依赖项添加到build.sbt

      "org.springframework.data" % "spring-data-neo4j" % "3.2.2.RELEASE",
      "org.springframework.data" % "spring-data-neo4j-rest" % "3.2.2.RELEASE",
      "org.springframework.data" % "spring-data-neo4j-tx" % "3.2.2.RELEASE"
  1. Global.java

    public class Global extends GlobalSettings {
        private ApplicationContext ctx;
    
        @Override
        public void onStart(Application app) {
            ctx = new AnnotationConfigApplicationContext(Neo4jConfig.class);
        }
    
        @Override
        public <A> A getControllerInstance(Class<A> clazz) {
            return ctx.getBean(clazz);
        }
    
        @Override
        public void onStop(Application app){
            ((AnnotationConfigApplicationContext)ctx).close();
        }
    

    }

  2. Neo4j连接的配置类

    @Configuration
    @EnableTransactionManagement
    public class Neo4jConfig extends Neo4jConfiguration {
    
          public Neo4jConfig() {
              setBasePackage("model");// My Entity package
          }     
       @Bean
       public SpringRestGraphDatabase graphDatabaseService() {      
            return new SpringRestGraphDatabase("http://localhost:7474/db/data");
      }   
      @Override
      @Bean(name = "transactionManager")
      public PlatformTransactionManager neo4jTransactionManager() throws Exception {
         return new JtaTransactionManagerFactoryBean(getGraphDatabaseService()).getObject();
      }    
    }
    
  3. 使用NodeEntity

    注释您的国家/地区类
    @NodeEntity
    public class Country{ 
        public int id;  
        public String name;
        public String locale;
    }
    
  4. 使用Neo4jTemplate将对象保存到Graph DB

    @Autowired
    Neo4jTemplate template;
    
    public Country save(Country country){
        return template.save(country);
    }