2016-06-12 2 views
0

У меня есть куча вопросов, касающихся Java 8 и SDN4. Я создал модель в Neo4j v3.0, немного поиграл с запросами Cypher и теперь перешел к созданию приложения Spring Boot. Когда я начал использовать классы кодирования в Java, я начал пересматривать некоторые из моих моделей. Вот некоторые вопросы в моем сознании (и я не нашел примера, объясняющего это):Запросы приложений Java8 и Spring Neo4j

  1. Нужно ли использовать интерфейсы на Java с SDN? Я бы закодировал интерфейс Product, а затем мои продукты реализуют его, но так ли это, когда это делается при работе с ярлыками?
  2. Это несколько связано с моим вопросом о наследовании - у меня обычно есть ProductFamily, который наследует мой Product. На уровне базы данных он моделируется как (:Product)-[PartOf]->(:ProductFamily), но в коде они не будут супер/подкласс.
  3. Любые примеры использования Generics в контексте графика?
  4. Есть ли способ определить ограничения на то, какие отношения может иметь узел и их направление в Java?

Я понимаю, что, вероятно, нет ни одного правильного ответа, но в Интернете есть мало места, поэтому надеемся получить здесь просветленный!

ответ

2
  1. Если у вас интерфейс продукта с аннотацией @NodeEntity, то вы будете иметь Product ярлык в дополнении к этикетке на ваш реализующий класс, который я предполагаю, что вы хотите. Если ваш интерфейс не аннотируется, то ваши классы реализации не наследуют ярлык от него.

  2. Не уверен, что вы имеете в виду, если вы говорите, что у вас есть ProductFamily, который наследует Product, но в коде это не будет супер/подкласс? На основании вашей модели графика, если вы хотите (:Product)-[PartOf]->(:ProductFamily), тогда у вас будет класс Product, который поддерживает ссылку на класс ProductFamily, и эта ссылка была аннотация с @Relationship. Если класс Product наследуется от ProductFamily, то сохранение Product приведет к двум ярлыкам: Product и ProductFamily, поскольку Product IS-A ProductFamily.

  3. Как вы видите себя с помощью дженериков - от этого действительно зависит ответ. В некоторых случаях поддерживаются, некоторые из них не (пример чего-то не поддерживается прямо сейчас equivalent of template.createRelationBetween in SDN4)

  4. Да, через @Relationship аннотацию который принимает type и direction. Обратите внимание, что эта аннотация ограничивает только модель вашего домена, но вы вполне можете проигнорировать это, создав отношения в другом направлении с помощью пользовательского запроса.

+0

Спасибо! Re (2) и (3), идея состоит в том, что я мог бы работать с коллекциями на основе ProductFamily как Generics, хотя у меня есть продукты, возвращающиеся в запрос. И большинство свойств определяются в классе ProductFamily, а класс Product имеет только свойства, специфичные для него. Например. Пользовательские запросы для всех 'продуктов', поддерживающих определенную функцию, - я могу затем возвратить 'ProductFamily', если это семейная функция и некоторые специальные' Product ', если ее нет, но моя коллекция такая же. Надеюсь, это имеет смысл! – aaaaarrrgghhh

+0

Да, возможно, хотя у вас будут две метки на узлах продукта (Product и ProductFamily) – Luanne

Смежные вопросы