Neo4J 的动态 Spring 数据 类 基于 Ontology
Dynamic Spring Data Classes for Neo4J based on an Ontology
我必须使用 Spring framework with Spring-Data-Neo4J 创建一个需要与 Neo4J 数据库交互的 Web 服务。这需要一个静态数据域模型,例如定义的标签、关系、属性。
问题是,我的数据是基于一个 Ontology (via the neosemantics 插件),将来可能会被修改。如果应用程序可以自动采用它,那就太好了。这样,只需编辑 ontology 即可扩展数据模型,无需额外的编程知识。
这是否意味着我必须动态生成 Spring 数据 类(基于 Ontology)或者是否有更好的方法来实现 Spring -Data-Neo4J(或者我应该使用不同的框架)?
当然,您可以想出一种方法,从 ontology 生成一组 类。但这可能会带来比解决的问题更多的问题。
自动生成的一组 类 可能不对应于适合您的用例的数据模型。确定合适的数据模型仍然需要人工。
此外,新的 类 可能与现有客户端代码不兼容。而且您可能必须将现有的数据库迁移到新的数据模型。解决所有需要人工的问题。
我最终使用了 Java neo4j driver instead of Spring-Data-Neo4j 和一个通用节点 class 实现,只有字段 ID、标签列表和属性映射。在数据库中创建节点之前,可以根据 ontology 检查设置的标签和属性。这样我就可以通过仅修改 ontology 而无需生成特定的 Spring-Data-Neo4j 数据 classes 来强制执行一组特定的节点标签和属性。
我必须使用 Spring framework with Spring-Data-Neo4J 创建一个需要与 Neo4J 数据库交互的 Web 服务。这需要一个静态数据域模型,例如定义的标签、关系、属性。
问题是,我的数据是基于一个 Ontology (via the neosemantics 插件),将来可能会被修改。如果应用程序可以自动采用它,那就太好了。这样,只需编辑 ontology 即可扩展数据模型,无需额外的编程知识。
这是否意味着我必须动态生成 Spring 数据 类(基于 Ontology)或者是否有更好的方法来实现 Spring -Data-Neo4J(或者我应该使用不同的框架)?
当然,您可以想出一种方法,从 ontology 生成一组 类。但这可能会带来比解决的问题更多的问题。
自动生成的一组 类 可能不对应于适合您的用例的数据模型。确定合适的数据模型仍然需要人工。
此外,新的 类 可能与现有客户端代码不兼容。而且您可能必须将现有的数据库迁移到新的数据模型。解决所有需要人工的问题。
我最终使用了 Java neo4j driver instead of Spring-Data-Neo4j 和一个通用节点 class 实现,只有字段 ID、标签列表和属性映射。在数据库中创建节点之前,可以根据 ontology 检查设置的标签和属性。这样我就可以通过仅修改 ontology 而无需生成特定的 Spring-Data-Neo4j 数据 classes 来强制执行一组特定的节点标签和属性。