Neo4jServer в Neo4jConfiguration - 4.1.0?

Я использовал последний код в 4.1.0-BUILD-SNAPSHOT, так как мне нужны некоторые новые исправления ошибок в ветке 4.1, и я только что заметил, что «neo4jServer()» больше не является методом, предоставляемым Neo4jConfiguration. Каков новый способ инициализации подключения к серверу и версии в памяти для модульных тестов? Раньше я использовал «RemoteServer» и «InProcessServer» соответственно.


person GameSalutes    schedule 13.01.2016    source источник


Ответы (1)


Обратите внимание, официальная документация будет обновлена ​​в ближайшее время.

В это время:

Что изменилось

SDN 4.1 использует новые библиотеки Neo4j OGM 2.0. OGM 2.0 представляет изменения API, в основном из-за добавления поддержки Embedded, а также Remote Neo4j. Следовательно, подключение к производственной базе данных теперь выполняется с использованием соответствующего Driver, а не с использованием RemoteServer или InProcessServer, которые устарели.

Для тестирования мы рекомендуем использовать EmbeddedDriver. По-прежнему можно создать тестовый сервер в памяти, но это не рассматривается в этом ответе.

Доступные драйверы

В настоящее время предоставляются следующие реализации Driver

  • http: org.neo4j.drivers.http.driver.HttpDriver
  • встроенный: org.neo4j.drivers.embedded.driver.EmbeddedDriver

Реализация драйвера для протокола Bolt (Neo4j 3.0) будет доступна в ближайшее время.

Настройка драйвера

Существует два способа настройки драйвера — с помощью файла свойств или с помощью конфигурации Java. Существуют вариации на эти темы (в частности, для передачи учетных данных), но на данный момент вам должно помочь следующее:


Настройка HTTP-драйвера

Драйвер Http подключается к серверу Neo4j и взаимодействует с ним через Http. Драйвер Http необходимо использовать, если ваше приложение работает в режиме клиент-сервер. Обратите внимание, что драйвер HTTP попытается подключиться к серверу, работающему в отдельном процессе. Его нельзя использовать для запуска внутрипроцессного сервера.

Конфигурация файла свойств:

Преимущество использования файла свойств заключается в том, что он не требует внесения изменений в конфигурацию Spring.

Создайте файл с именем ogm.properties где-нибудь в пути к классам. Он должен содержать следующие записи:

  driver=org.neo4j.ogm.drivers.http.driver.HttpDriver
  URI=http://user:password@localhost:7474

Конфигурация Java:

Самый простой способ настроить драйвер — создать bean-компонент Configuration и передать его в качестве первого аргумента конструктору SessionFactory в конфигурации Spring:

import org.neo4j.ogm.config.Configuration;
...

@Bean 
public Configuration getConfiguration() {
   Configuration config = new Configuration();
   config
       .driverConfiguration()
       .setDriverClassName
        ("org.neo4j.ogm.drivers.http.driver.HttpDriver")
       .setURI("http://user:password@localhost:7474");
   return config;
}

@Bean 
public SessionFactory getSessionFactory() {
    return new SessionFactory(getConfiguration(), <packages> );
}


Настройка встроенного драйвера

Встроенный драйвер напрямую подключается к движку базы данных Neo4j. Сервер не задействован, поэтому между кодом приложения и базой данных нет сетевых издержек. Вам следует использовать встроенный драйвер, если вы не хотите использовать модель клиент-сервер или если ваше приложение работает как неуправляемое расширение Neo4j.

Вы можете указать постоянное расположение хранилища данных, чтобы обеспечить устойчивость ваших данных после закрытия приложения, или вы можете использовать непостоянное хранилище данных, которое будет существовать только во время работы вашего приложения (идеально подходит для тестирования).

Создайте файл с именем ogm.properties где-нибудь в пути к классам. Он должен содержать следующие записи:

Конфигурация файла свойств (постоянное хранилище данных)

driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
URI=file:///var/tmp/graph.db

Конфигурация файла свойств (непостоянное хранилище данных)

driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver

Чтобы использовать непостоянное хранилище данных, просто опустите свойство URI.

Конфигурация Java

Для настройки встроенного драйвера используется тот же метод, что и для драйвера HTTP. Настройте bean-компонент Configuration и передайте его в качестве первого аргумента конструктору SessionFactory:

import org.neo4j.ogm.config.Configuration;
...

@Bean 
public Configuration getConfiguration() {
   Configuration config = new Configuration();
   config
       .driverConfiguration()
       .setDriverClassName
        ("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver")
       .setURI("file:///var/tmp/graph.db");
   return config;
}

@Bean 
public SessionFactory getSessionFactory() {
    return new SessionFactory(getConfiguration(), <packages> );
}

Если вы хотите использовать непостоянное хранилище данных (например, для тестирования), не устанавливайте атрибут URI в конфигурации:

@Bean 
public Configuration getConfiguration() {
   Configuration config = new Configuration();
   config
       .driverConfiguration()
       .setDriverClassName
        ("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver")
   return config;
}
person Vince    schedule 13.01.2016
comment
Спасибо, это как раз то, что мне было нужно! Также для других используется зависимость neo4j ogm: org.neo4j:neo4j-ogm:2.0.0-SNAPSHOT - person GameSalutes; 17.01.2016
comment
Также заметил, что EmbeddedDriver только регистрирует хук завершения работы JVM, чтобы закрыть его контекст, что приводило к проблемам с нехваткой памяти при выполнении множества модульных тестов, когда я каждый раз воссоздавал контекст Spring, чтобы получить новый экземпляр базы данных. Я добавил Components.driver().close() в аннотированный метод завершения работы @PreDestroy в Spring test Configuration для моих модульных тестов, но, возможно, это то, что следует рассмотреть для добавления в дружественную к модульному тестированию Neo4jConfiguration для 4.1. - person GameSalutes; 17.01.2016
comment
Строка @Udhaya varargs, например пакеты для сканирования метаданных github.com/neo4j/neo4j-ogm/blob/master/core/src/main/java/org/ - person Paul; 08.11.2016