From 8813ac2050f60b53054bcff08935079a282bbff4 Mon Sep 17 00:00:00 2001 From: Werner Nickl Date: Mon, 12 Dec 2011 14:44:29 +0100 Subject: [PATCH 1/8] junisphere_unleash_IndexProvider part2 added public string IndexProvider.createIndexValueForType(Class type) for a possibility to manipulate the indexName for the lowLevel __types__ indices --- .../data/neo4j/config/Neo4jConfiguration.java | 2 +- .../data/neo4j/support/Neo4jTemplate.java | 23 ++++++---- .../neo4j/support/index/IndexProvider.java | 21 ++++++--- .../support/index/IndexProviderImpl.java | 6 +++ ...ndexingNodeTypeRepresentationStrategy.java | 46 ++++++++++++------- .../TypeRepresentationStrategyFactory.java | 35 ++++++++++---- 6 files changed, 91 insertions(+), 42 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java index b8ccf6ad2..0e71c73af 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java @@ -141,7 +141,7 @@ public abstract class Neo4jConfiguration { @Bean public TypeRepresentationStrategyFactory typeRepresentationStrategyFactory() throws Exception { - return new TypeRepresentationStrategyFactory(graphDatabase()); + return new TypeRepresentationStrategyFactory(graphDatabase(), indexProvider()); } @Bean diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java index 7583117b1..10e6f8c29 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/Neo4jTemplate.java @@ -16,9 +16,22 @@ package org.springframework.data.neo4j.support; +import static org.springframework.data.neo4j.support.ParameterCheck.*; + +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.validation.Validator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.neo4j.graphdb.*; +import org.neo4j.graphdb.DynamicRelationshipType; +import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.graphdb.Node; +import org.neo4j.graphdb.Path; +import org.neo4j.graphdb.PropertyContainer; +import org.neo4j.graphdb.Relationship; +import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.helpers.collection.ClosableIterable; @@ -57,12 +70,6 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; -import javax.annotation.PostConstruct; -import javax.validation.Validator; -import java.util.Map; - -import static org.springframework.data.neo4j.support.ParameterCheck.notNull; - /** * Mediator class for the graph related services like the {@link GraphDatabaseService}, the used * {@link org.springframework.data.neo4j.core.TypeRepresentationStrategy}, entity instantiators for nodes and relationships as well as a spring conversion service. @@ -424,7 +431,7 @@ public class Neo4jTemplate implements Neo4jOperations, EntityPersister { Index relationshipIndex = infrastructure.getGraphDatabase().createIndex(Relationship.class, indexName, IndexType.SIMPLE); relationshipIndex.add((Relationship) element, field, value); } else if (element instanceof Node) { - infrastructure.getGraphDatabase().createIndex(Node.class, indexName, IndexType.SIMPLE).add((Node) element, field, value); + infrastructure.getIndexProvider().createIndex(Node.class, indexName, IndexType.SIMPLE).add((Node) element, field, value); } else { throw new IllegalArgumentException("Provided element is neither node nor relationship " + element); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java index 6011e0b23..be7fbdf73 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java @@ -21,25 +21,32 @@ import org.springframework.data.neo4j.mapping.Neo4jPersistentProperty; public interface IndexProvider { - public abstract Index getIndex(Class type); + Index getIndex(Class type); - public abstract Index getIndex(Class type, String indexName); + Index getIndex(Class type, String indexName); @SuppressWarnings("unchecked") - public abstract Index getIndex(Class type, String indexName, + Index getIndex(Class type, String indexName, IndexType indexType); @SuppressWarnings("unchecked") - public abstract Index getIndex(String indexName); + Index getIndex(String indexName); - public abstract boolean isNode(Class type); + boolean isNode(Class type); // TODO handle existing indexes @SuppressWarnings("unchecked") - public abstract Index createIndex(Class type, String indexName, + Index createIndex(Class type, String indexName, IndexType fullText); - public abstract Index getIndex(Neo4jPersistentProperty property, + Index getIndex(Neo4jPersistentProperty property, final Class instanceType); + /** + * adjust your indexName for the "__types__" indices + * + * @param Class type + * @return prefixed indexName for Type + */ + String createIndexValueForType(Class type); } \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java index 0aff8c38a..ab2d8bd3f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java @@ -107,4 +107,10 @@ public class IndexProviderImpl implements IndexProvider { if (providedIndexName==null || providedIndexName.equals(defaultIndexName)) throw new IllegalStateException("Index name for "+property+" must differ from the default name: "+defaultIndexName); return getIndex(declaringType, indexName, property.getIndexInfo().getIndexType()); } + + @Override + public String createIndexValueForType(Class type) { + return type.getName(); + } + } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java index 7e4d3fa24..5b52d36a4 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java @@ -24,6 +24,7 @@ import org.springframework.data.neo4j.annotation.NodeEntity; import org.springframework.data.neo4j.core.GraphDatabase; import org.springframework.data.neo4j.core.NodeTypeRepresentationStrategy; import org.springframework.data.neo4j.support.index.ClosableIndexHits; +import org.springframework.data.neo4j.support.index.IndexProvider; import org.springframework.data.neo4j.support.index.IndexType; public class IndexingNodeTypeRepresentationStrategy implements NodeTypeRepresentationStrategy { @@ -31,32 +32,39 @@ public class IndexingNodeTypeRepresentationStrategy implements NodeTypeRepresent public static final String INDEX_NAME = "__types__"; public static final String TYPE_PROPERTY_NAME = "__type__"; public static final String INDEX_KEY = "className"; - private GraphDatabase graphDb; + private final GraphDatabase graphDb; private final EntityTypeCache typeCache; + + private final IndexProvider indexProvider; - public IndexingNodeTypeRepresentationStrategy(GraphDatabase graphDb) { + public IndexingNodeTypeRepresentationStrategy(GraphDatabase graphDb, IndexProvider indexProvider) { this.graphDb = graphDb; + this.indexProvider = indexProvider; typeCache = new EntityTypeCache(); } - private Index getNodeTypesIndex() { - return graphDb.createIndex(Node.class,INDEX_NAME, IndexType.SIMPLE); - } + private Index getNodeTypesIndex() { + return graphDb.createIndex(Node.class, INDEX_NAME, IndexType.SIMPLE); + } - - @Override - public void postEntityCreation(Node state, Class type) { + @Override + public void postEntityCreation(Node state, Class type) { addToNodeTypesIndex(state, type); state.setProperty(TYPE_PROPERTY_NAME, type.getName()); - } + } private void addToNodeTypesIndex(Node node, Class entityClass) { - Class klass = entityClass; - while (klass.getAnnotation(NodeEntity.class) != null) { - getNodeTypesIndex().add(node, INDEX_KEY, klass.getName()); - klass = klass.getSuperclass(); - } - } + Class klass = entityClass; + + while (klass.getAnnotation(NodeEntity.class) != null) { + String value = klass.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(klass); + + getNodeTypesIndex().add(node, INDEX_KEY, value); + klass = klass.getSuperclass(); + } + } @Override public ClosableIterable findAll(Class clazz) { @@ -64,9 +72,13 @@ public class IndexingNodeTypeRepresentationStrategy implements NodeTypeRepresent } private ClosableIterable findAllNodeBacked(Class clazz) { - final IndexHits allEntitiesOfType = getNodeTypesIndex().get(INDEX_KEY, clazz.getName()); + String value = clazz.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(clazz); + + final IndexHits allEntitiesOfType = getNodeTypesIndex().get(INDEX_KEY, value); return new ClosableIndexHits(allEntitiesOfType); - } + } @Override public long count(Class entityClass) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java index a647033da..14492e797 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java @@ -23,19 +23,32 @@ import org.neo4j.graphdb.index.Index; import org.springframework.data.neo4j.core.GraphDatabase; import org.springframework.data.neo4j.core.NodeTypeRepresentationStrategy; import org.springframework.data.neo4j.core.RelationshipTypeRepresentationStrategy; +import org.springframework.data.neo4j.support.index.IndexProvider; import org.springframework.data.neo4j.support.index.NoSuchIndexException; public class TypeRepresentationStrategyFactory { - private GraphDatabase graphDatabaseService; - private Strategy strategy; + private final GraphDatabase graphDatabaseService; + private final Strategy strategy; + private IndexProvider indexProvider; public TypeRepresentationStrategyFactory(GraphDatabase graphDatabaseService) { - this(graphDatabaseService,chooseStrategy(graphDatabaseService)); + this(graphDatabaseService,chooseStrategy(graphDatabaseService), null); } + + public TypeRepresentationStrategyFactory(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { + this(graphDatabaseService,chooseStrategy(graphDatabaseService), indexProvider); + } + public TypeRepresentationStrategyFactory(GraphDatabase graphDatabaseService,Strategy strategy) { this.graphDatabaseService = graphDatabaseService; this.strategy = strategy; } + + public TypeRepresentationStrategyFactory(GraphDatabase graphDatabaseService,Strategy strategy, IndexProvider indexProvider) { + this.indexProvider = indexProvider; + this.graphDatabaseService = graphDatabaseService; + this.strategy = strategy; + } private static Strategy chooseStrategy(GraphDatabase graphDatabaseService) { if (isAlreadyIndexed(graphDatabaseService)) return Strategy.Indexed; @@ -62,17 +75,21 @@ public class TypeRepresentationStrategyFactory { } public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy() { - return strategy.getNodeTypeRepresentationStrategy(graphDatabaseService); + return strategy.getNodeTypeRepresentationStrategy(graphDatabaseService, indexProvider); } public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy() { return strategy.getRelationshipTypeRepresentationStrategy(graphDatabaseService); } + + public void setIndexProvider(IndexProvider indexProvider) { + this.indexProvider = indexProvider; + } private enum Strategy { SubRef { @Override - public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { + public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { return new SubReferenceNodeTypeRepresentationStrategy(graphDatabaseService); } @@ -83,8 +100,8 @@ public class TypeRepresentationStrategyFactory { }, Indexed { @Override - public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { - return new IndexingNodeTypeRepresentationStrategy(graphDatabaseService); + public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { + return new IndexingNodeTypeRepresentationStrategy(graphDatabaseService, indexProvider); } @Override @@ -94,7 +111,7 @@ public class TypeRepresentationStrategyFactory { }, Noop { @Override - public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { + public NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { return new NoopNodeTypeRepresentationStrategy(); } @@ -104,7 +121,7 @@ public class TypeRepresentationStrategyFactory { } }; - public abstract NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService); + public abstract NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider); public abstract RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService); } From a496453cc197fe9a50971343a8d9c23702d2a65e Mon Sep 17 00:00:00 2001 From: Jean-Pierre Bergamin Date: Tue, 13 Dec 2011 16:08:13 +0100 Subject: [PATCH 2/8] Do not convert a property of type Object if it holds a neo4j supported type --- ...rtingNodePropertyFieldAccessorFactory.java | 25 +++++++++++++++-- .../mapping/Neo4jPersistentProperty.java | 17 +++++++++++ .../mapping/Neo4JPersistentPropertyImpl.java | 8 ++++++ .../mapping/Neo4jEntityConverterTest.java | 28 +++++++++++++++++++ .../data/neo4j/model/Person.java | 10 +++++++ 5 files changed, 86 insertions(+), 2 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/ConvertingNodePropertyFieldAccessorFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/ConvertingNodePropertyFieldAccessorFactory.java index 36366414a..248c77892 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/ConvertingNodePropertyFieldAccessorFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/ConvertingNodePropertyFieldAccessorFactory.java @@ -62,15 +62,36 @@ public class ConvertingNodePropertyFieldAccessorFactory implements FieldAccessor propertyConverter = new PropertyConverter(template.getConversionService(),property); } + private boolean doConvert(final Object value) { + // Do convert by default + boolean doConvert = true; + // If the value if of type Object and a neo4j supported type, do not convert it + if (property.getType().equals(Object.class) && property.isNeo4jPropertyValue(value)) { + doConvert = false; + } + + return doConvert; + } + @Override public Object setValue(final Object entity, final Object newVal, MappingPolicy mappingPolicy) { - super.setValue(entity, propertyConverter.serializePropertyValue(newVal,targetType), mappingPolicy); + Object value = newVal; + // Convert the value if it's not of a neo4j supported type + if (doConvert(value)) { + value = propertyConverter.serializePropertyValue(value, targetType); + } + super.setValue(entity, value, mappingPolicy); return newVal; } @Override public Object doGetValue(final Object entity) { - return propertyConverter.deserializePropertyValue(super.doGetValue(entity)); + Object ret = super.doGetValue(entity); + if (doConvert(ret)) { + ret = propertyConverter.deserializePropertyValue(ret); + } + + return ret; } @Override diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java index 9018540bc..130977364 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/mapping/Neo4jPersistentProperty.java @@ -54,8 +54,25 @@ public interface Neo4jPersistentProperty extends PersistentProperty getAnnotations(); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java index 393b648f1..b09413e8a 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java @@ -196,6 +196,14 @@ class Neo4jPersistentPropertyImpl extends AbstractPersistentProperty void neo4jPropertyTest(final T value) { + michael.setDynamicProperty(value); + storeInGraph(michael); + final Person loaded = template.findOne(michael.getId(), Person.class); + assertEquals(value, loaded.getDynamicProperty()); + } + + @Test + public void testIntProperty() { + neo4jPropertyTest(123); + } + + @Test + public void testDoubleProperty() { + neo4jPropertyTest(3.1415); + } + + @Test + public void testBooleanProperty() { + neo4jPropertyTest(true); + } + + @Test + public void testIntegerProperty() { + neo4jPropertyTest(Integer.valueOf(3)); + } + @Test public void testDeleteProperty() { final Node existingNode = createNewNode(); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java index 01a2a6925..3d7b2ccd7 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java @@ -51,6 +51,8 @@ public class Person { @Indexed private int age; + private Object dynamicProperty; + private Short height; private transient String thought; @@ -261,6 +263,14 @@ public class Person { this.nickname = nickname; } + public void setDynamicProperty(Object dynamicProperty) { + this.dynamicProperty = dynamicProperty; + } + + public Object getDynamicProperty() { + return dynamicProperty; + } + public Person(Long graphId) { this.graphId = graphId; } From b9af5707a1c9982a491227bd0833f246c622512b Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Thu, 15 Dec 2011 13:22:44 +0100 Subject: [PATCH 3/8] updated documentation --- .../programming-model/conversion.xml | 16 ++ .../reference/programming-model/indexing.xml | 87 +++++-- .../programming-model/introducedmethods.xml | 10 +- .../programming-model/projection.xml | 6 +- .../programming-model/repositories.xml | 237 ++++++++++++------ .../reference/programming-model/spatial.xml | 6 +- .../reference/programming-model/template.xml | 35 ++- .../programming-model/transactions.xml | 29 ++- 8 files changed, 303 insertions(+), 123 deletions(-) create mode 100644 src/docbkx/reference/programming-model/conversion.xml diff --git a/src/docbkx/reference/programming-model/conversion.xml b/src/docbkx/reference/programming-model/conversion.xml new file mode 100644 index 000000000..d1efd64fc --- /dev/null +++ b/src/docbkx/reference/programming-model/conversion.xml @@ -0,0 +1,16 @@ + + +
+ Conversion + + Neo4jTemplate has a generic convert method which might also use projection underneath. + The same conversion facilities that are used by default in the result handling DSL are offered here for individual use. + + + Supported conversions are: Nodes to Paths and to Entities, Relationships to Paths and to Entities, Paths to Node (EndNode), + Relationships (LastRelationship) and to EntityPaths. Entities to Nodes or Relationships. + + + It is also possible to provide a custom ResultConverter that additionally takes care of conversions. + +
\ No newline at end of file diff --git a/src/docbkx/reference/programming-model/indexing.xml b/src/docbkx/reference/programming-model/indexing.xml index 5faa250c9..cf13a6cc3 100644 --- a/src/docbkx/reference/programming-model/indexing.xml +++ b/src/docbkx/reference/programming-model/indexing.xml @@ -3,10 +3,16 @@
Indexing + + Indexing is used in Neo4j to quickly find nodes and relationships to start graph operations from. + Either for manually traversing the graph, using the traversal framework, cypher or gremlin queries + or for "global" graph operations. Indexes are also employed to ensure uniqueness of elements with + certain properties. + - The Neo4j graph database can use different so-called index providers for exact lookups and fulltext + The Neo4j graph database employs different index providers for exact lookups and fulltext searches. Lucene is the default index provider implementation. Each named index is configured to be - fulltext or exact. + fulltext or exact. There is also a spatial index provider for geo-searches.
@@ -23,20 +29,29 @@ other fields are indexed with their string representation. - The @Indexed annotation also provides the option of using a custom index. The default index + The @Indexed annotation also provides the option of using a custom index name. The default index name is the simple class name of the entity, so that each class typically gets its own index. It is recommended to not have two entity classes with the same class name, regardless of package. + + If a field is declared in a superclass but different indexes for subclasses are needed, the + level attribute declares what will be used as index. Level.CLASS + uses the class where the field was declared and Level.INSTANCE uses the class + that is provided or of the actual entity instance. The indexes can be queried by using a repository (see ). - Typically, the repository is an instance of - org.springframework.data.neo4j.repository.DirectGraphRepositoryFactory. + The repository is an instance of + org.springframework.data.neo4j.repository.IndexRepository. The methods findByPropertyValue() and findAllByPropertyValue() work on the exact indexes and return the first or all matches. To do range queries, use findAllByRange() (please note that currently both values are inclusive). + + For providing explicit index names the repository has to extend NamedIndexRepository. + This adds the shown methods with another signature that take the index name as first parameter. + Indexing entities Spring Data Neo4j also supports fulltext indexes. By default, indexed fields are stored in an exact lookup index. To have them analyzed and prepared for fulltext search, the - @Indexed annotation has the boolean fulltext attribute. + @Indexed annotation has the type attribute which can be set to IndexType.FULLTEXT. Please note that fulltext indexes require a separate index name as the fulltext configuration is stored in the index itself. @@ -72,7 +87,7 @@ for (Person middleAgedDeveloper : graphRepository.findAllByRange("age", 20, 40)) Access to the fulltext index is provided by the findAllByQuery() repository method. Wildcards like * are allowed. Generally though, the fulltext querying rules of the underlying index provider apply. See the - Lucene documentation for more + Lucene documentation for more information on this. @@ -101,41 +116,73 @@ Person mark = graphRepository.findAllByQuery("people-search", "name", "ma*");
Manual index access - The index for a domain class is also available from GraphDatabaseContext via + The index for a domain class is also available from Neo4jTemplate via the getIndex() method. The second parameter is optional and takes the index name if it should not be inferred from the class name. It returns the index implementation that is provided by Neo4j. - Manual index usage - Manual index retrieval by type and name + personIndex = gdc.getIndex(Person.class); +Index personIndex = template.getIndex(null, Person.class); personIndex.query(new QueryContext(NumericRangeQuery.newÍntRange("age", 20, 40, true, true)) .sort(new Sort(new SortField("age", SortField.INT, false)))); // Named index -Index namedPersonIndex = gdc.getIndex(Person.class, "people"); +Index namedPersonIndex = template.getIndex("people",Person.class); namedPersonIndex.get("name", "Mark"); // Fulltext index -Index personFulltextIndex = gdc.getIndex(Person.class, "people-search", true); +Index personFulltextIndex = template.getIndex("people-search", Person.class); +personFulltextIndex.query("name", "*cha*"); +personFulltextIndex.query("{name:*cha*}"); +]]> + + + It is also possible to pass in the property name of the entity with an @Indexed annotation whose + index should be returned. + + + Manual index retrieval by property configuration + personIndex = template.getIndex(Person.class, "age"); +personIndex.query(new QueryContext(NumericRangeQuery.newÍntRange("age", 20, 40, true, true)) + .sort(new Sort(new SortField("age", SortField.INT, false)))); + +// Fulltext index +Index personFulltextIndex = template.getIndex(Person.class,"name"); personFulltextIndex.query("name", "*cha*"); personFulltextIndex.query("{name:*cha*}"); ]]>
- Indexing in Neo4jTemplate - - Neo4jTemplate also offers index support, providing auto-indexing for fields at creation time. - There is an autoIndex method that can also add indexes for a set of fields in one go. - + Index queries in Neo4jTemplate For querying the index, the template offers query methods that take either the exact match - parameters or a query object/expression, and push the results wrapped uniformly as Paths to - the supplied PathMapper to be converted or collected. + parameters or a query object/expression, return the results as Result objects which + then can be converted and projected further using the result-conversion-dsl (see ).
+
+ Neo4j Auto Indexes + + Neo4j allows to configure auto-indexing + for certain properties on nodes and relationships. This auto-indexing differs + from the approach used in Spring Data Neo4j because it only updates the indexes when the transaction is committed. So the + index modifications will only be available after the successful commit. + It is possible to use the specific index names node_auto_index and relationship_auto_index when + querying indexes in Spring Data Neo4j either with the query methods in template and repositories or via Cypher and Gremlin. + +
+
+ Spatial Indexes + + Spring Data Neo4j offers limited support for spatial queries using the neo4j-spatial library. See the + separate chapter for details. + +
diff --git a/src/docbkx/reference/programming-model/introducedmethods.xml b/src/docbkx/reference/programming-model/introducedmethods.xml index cf93ea093..96be16a13 100644 --- a/src/docbkx/reference/programming-model/introducedmethods.xml +++ b/src/docbkx/reference/programming-model/introducedmethods.xml @@ -1,8 +1,14 @@
- Introduced methods + Active Record Methods for Advanced Mapping Mode + This chapter only applies to the advanced mapping. Currently the Aspects introduce the following + methods by default, this will change in the future, there will be separate Mixin-Interfaces that + can selectively mixed into the domain entities if needed. Otherwise the AspectJ interaction will + be restricted to field access interception and post constructor handling. + + The node and relationship aspects introduce (via AspectJ ITD - inter type declaration) several methods to the entities. @@ -114,7 +120,7 @@ - Executes the given query, providing the {self} variable with the node-id and returning the results converted to the target type. + Executes the given Cypher query, providing the {self} variable with the node-id and returning the results converted to the target type. <T> Iterable<T> NodeBacked.findAllByQuery(final String query, final Class<T> targetType) diff --git a/src/docbkx/reference/programming-model/projection.xml b/src/docbkx/reference/programming-model/projection.xml index 3b8bfac1d..71545eac8 100644 --- a/src/docbkx/reference/programming-model/projection.xml +++ b/src/docbkx/reference/programming-model/projection.xml @@ -16,8 +16,8 @@ context and only offers the attributes and methods needed here would be very beneficial. Spring Data Neo4j offers initial support for projecting node and relationship entities to different target - types. All instances of this projected entity share the same backing node or relationship, so data changes are - reflected immediately. + types. All instances of this projected entity share the same backing node or relationship, so changes are + reflected on the same data. This could for instance also be used to handle nodes of a traversal with a unified (simpler) type (e.g. for @@ -41,6 +41,4 @@ for (Person person : graphRepository.findAllByPropertyValue("occupation","develo } ]]> - -
diff --git a/src/docbkx/reference/programming-model/repositories.xml b/src/docbkx/reference/programming-model/repositories.xml index 3b7f837a5..3e1b4b9d7 100644 --- a/src/docbkx/reference/programming-model/repositories.xml +++ b/src/docbkx/reference/programming-model/repositories.xml @@ -4,37 +4,32 @@ CRUD with repositories The repositories provided by Spring Data Neo4j build on the composable repository infrastructure - in Spring Data Commons. + in Spring Data Commons. They allow for interface based composition of repositories consisting of provided default implementations for certain interfaces and additional custom implementations for other methods. - - - - - - - - - - - Spring Data Neo4j repositories support annotated and named queries for the Neo4j - Cypher query-language. + Cypher query-language and + Gremlin graph DSL. Spring Data Neo4j comes with typed repository implementations that provide methods for - locating node and relationship entities. There are 3 types of basic repository interfaces + locating node and relationship entities. There are several types of basic repository interfaces and implementations. CRUDRepository provides basic operations, IndexRepository and NamedIndexRepository delegate to Neo4j's internal indexing subsystem for queries, and TraversalRepository handles Neo4j traversals. - GraphRepository is a convenience repository interface, extending CRUDRepository, + With the RelationshipOperationsRepository it is possible to access, create and delete + relationships between entitites or nodes. + The SpatialRepository allows geographic searches () + + + GraphRepository is a convenience repository interface, combining CRUDRepository, IndexRepository, and TraversalRepository. Generally, it has all the - desired repository methods. If named index operations are required, then NamedIndexRepository - may also be included. + desired repository methods. If other operations are required then the additional repository interfaces should + be added to the individual interface declaration.
@@ -45,41 +40,38 @@ for type based queries. - Load an instance via a Neo4j node id + Load an entity instance via an id T findOne(id) - Check for existence of a Neo4j node id + Check for existence of a id in the graph boolean exists(id) - Iterate over all nodes of a node entity type - Iterable<T> findAll() - (supported in future versions: - Iterable<T> findAll(Sort) and - Page<T> findAll(Pageable)) + Iterate over all entities instances of the repository entity type + + + Iterable<T> findAll() + Iterable<T> findAll(Sort) + Page<T> findAll(Pageable) + + - Count the instances of a node entity type + Count the instances of the repository entity type Long count() - Save a graph entity + Save entities T save(T) and Iterable<T> save(Iterable<T>) - Delete a graph entity + Delete graph entities void delete(T), void; delete(Iterable<T>), and deleteAll() - - Important to note here is that the save, delete, and deleteAll - methods are only there to conform to the org.springframework.data.repository.Repository - interface. The recommended way of saving and deleting entities is by using entity.persist() - and entity.remove(). -
@@ -128,30 +120,33 @@
- Cypher queries + Query and Finder Methods
Annotated queries Queries using the Cypher graph query language can be supplied with the @Query annotation. - That means every method annotated with @Query("start n=(%node) match (n)-->(m) return m") - will use the supplied query string. The named parameter %node will be replaced by the actual method parameters. - Node and Relationship-Entities are resolved to their respective id's and all other parameters are + That means every method annotated with @Query("start n=node:IndexName(key={node or 0}) match (n)-->(m) return m") + will use the supplied query string. The named or indexed parameter {node} will be substituted by the actual method parameter. + Node and Relationship-Entities are handled directly, Iterables thereof as well. All other parameters are replaced directly (i.e. Strings, Longs, etc). There is special support for the Sort and Pageable parameters from Spring Data Commons, which are supported to add programmatic paging and sorting (alternatively static paging and sorting can be supplied in the query string itself). For using the named parameters you have to either annotate the parameters of the method with the - @Param("node") annotation or enable debug symbols. + @Param("node") annotation or enable debug symbols. Indexed parameters are always usable. + + Gremlin queries can be used similarly, the @Query annotation would just need a type=QueryType.GREMLIN attribute. + Parameters are supported in the same way. +
Named queries Spring Data Neo4j also supports the notion of named queries which are externalized in property-config-files (META-INF/neo4j-named-queries.properties). Those files have the format: - Entity.finderName=query (e.g. Person.findBoss=start p=({p_person}) match (p)<-[:BOSS]-(boss) return boss). - Otherwise named queries support the same parameters as annotated queries. For using the named parameters you have to either - annotate the parameters of the method with the @Param("p_person") annotation or enable debug symbols. + Entity.finderName=query (e.g. Person.findBoss=start p=node({0}) match (p)<-[:BOSS]-(boss) return boss). + Otherwise named queries support the same parameters as annotated queries.
@@ -189,36 +184,118 @@
+
+ Queries derived from finder-method names + As known from Rails or Grails it is possible to derive queries for domain entities from finder method names + like Iterable<Person> findByNameAndAgeGreaterThan(String name, int age). + + Using the infrastructure in Spring Data Commons that allows to collect the meta information about entities and their properties a finder method + name can be split into its semantic parts and converted into a cypher query. + @Indexed fields will be converted into index-lookups of the start clause, + navigation along relationships will be reflected in the match clause properties with operators will end up as expressions in the + where clause. Order and limiting of the query will by handled by provided Pageable or parameters. + The other parameters will be used in the order they appear in the method signature so that should align with the expressions stated in the method name. + + + + Some examples of methods and resulting cypher queries of a PersonRepository + { + +// start person=node:Person(id={0}) return person +Person findById(String id) + +// start person=node:Person({0}) return person - {0} will be "id:"+name +Iterable findByNameLike(String name) + +// start person=node:__types__("className"="com...Person") +// where person.age = {0} and person.married = {1} +// return person +Iterable findByAgeAndMarried(int age, boolean married) + +// start person=node:__types__("className"="com...Person") +// match person<-[:CHILD]-parent +// where parent.age > {0} and person.married = {1} +// return person +Iterable findByParentAgeAndMarried(int age, boolean married) +} +]]> + + +
+
+ + CypherDSL repository + + Spring Data Neo4j supports the new cypher-dsl to write Cypher queries in a statically typed way. Just by including + CypherDslRepository to your repository you get the Page query(Execute query, params, Pageable page) + and the EndResult query(Execute query, params);. The result type of the Cypher-DSL builder is called + Execute + + + Examples for Cypher-DSL repository + + , + CypherDslRepository {} + + @Autowired PersonRepository repo; + // START company=node:Company(name={name}) MATCH company<-[:WORKS_AT]->person RETURN person + + Execute query = start( lookup( "company", "Company", "name", param("name") ) ). + match( path().from( "company" ).in( "WORKS_AT" ).to( "person" )). + returns( nodes( "person" )) + Page people = repo.query(query , map("name","Neo4j"), new PageRequest(1,10)); + + QPerson person = QPerson.person; + QCompany company = QCompany.company; + Execute query = start( lookup( company, "Company", company.name, param("name") ) ). + match( path().from( company ).in( "WORKS_AT" ).to( person ). + .where(person.firstName.like("P*").and(person.age.gt(25))). + returns( nodes( person )) + EndResult people = repo.query(query , map("name","Neo4j")); + + ]]> + +
+ + +
Creating repositories - The Repository instances are either created manually via a - DirectGraphRepositoryFactory, bound to a concrete node or relationship entity class. - The DirectGraphRepositoryFactory is configured in the Spring context and can be injected. + The Repository instances should normally be injected but can also be created manually via the + Neo4jTemplate. - Using GraphRepositories - graphRepository = template - .repositoryFor(Person.class); + Using basic GraphRepository methods + {} -Person michael = graphRepository.save(new Person("Michael", 36)); +@Autowired PersonRepository repo; +// OR +GraphRepository repo = template + .repositoryFor(Person.class); -Person dave = graphRepository.findOne(123); +Person michael = repo.save(new Person("Michael", 36)); -Long numberOfPeople = graphRepository.count(); +Person dave = repo.findOne(123); -Person mark = graphRepository.findByPropertyValue("name", "mark"); +Long numberOfPeople = repo.count(); -Iterable devs = graphRepository.findAllByProperyValue("occupation", "developer"); +Person mark = repo.findByPropertyValue("name", "mark"); -Iterable middleAgedPeople = graphRepository.findAllByRange("age", 20, 40); +Iterable devs = repo.findAllByProperyValue("occupation", "developer"); -Iterable aTeam = graphRepository.findAllByQuery("name", "A*"); +Iterable middleAgedPeople = repo.findAllByRange("age", 20, 40); -Iterable davesFriends = graphRepository.findAllByTraversal(dave, +Iterable aTeam = repo.findAllByQuery("name", "A*"); + +Iterable davesFriends = repo.findAllByTraversal(dave, Traversal.description().pruneAfterDepth(1) .relationships(KNOWS).filter(returnAllButStartNode())); ]]> @@ -237,6 +314,29 @@ Iterable davesFriends = graphRepository.findAllByTraversal(dave, Composing repositories , PersonRepositoryExtension {} +// configure the repositories, preferably via the datagraph:repositories namespace +// (template reference is optional) + + +// have it injected +@Autowired +PersonRepository personRepository; +// or created via the template +PersonRepository personRepository = template.repositoryFor(Person.class); + + +Person michael = personRepository.save(new Person("Michael",36)); + +Person dave=personRepository.findOne(123); + +Iterable devs = personRepository.findAllByPropertyValue("occupation","developer"); + +Iterable aTeam = graphRepository.findAllByQuery( "name","A*"); + +Iterable friends = personRepository.findFriends(dave); + + // alternatively select some of the required repositories individually public interface PersonRepository extends CRUDGraphRepository, IndexQueryExecutor, TraversalQueryExecutor, @@ -254,27 +354,14 @@ public class PersonRepositoryImpl implements PersonRepositoryExtension { return baseRepository.findAllByTraversal(person, friendsTraversal); } } - -// configure the repositories, preferably via the datagraph:repositories namespace -// (template reference is optional) - - -// have it injected -@Autowired -PersonRepository personRepository; - -Person michael = personRepository.save(new Person("Michael",36)); - -Person dave=personRepository.findOne(123); - -Iterable devs = personRepository.findAllByPropertyValue("occupation","developer"); - -Iterable aTeam = graphRepository.findAllByQuery( "name","A*"); - -Iterable friends = personRepository.findFriends(dave); ]]> - + + + If you use <context:component-scan> in your spring config, please make sure to put it behind + <neo4j:repositories>, as the RepositoryFactoryBean adds new bean definitions for all the declared + repositories, the context scan doesn't pick them up otherwise. + +
\ No newline at end of file diff --git a/src/docbkx/reference/programming-model/spatial.xml b/src/docbkx/reference/programming-model/spatial.xml index adfcbe35a..1766fe28b 100644 --- a/src/docbkx/reference/programming-model/spatial.xml +++ b/src/docbkx/reference/programming-model/spatial.xml @@ -4,7 +4,7 @@ Geospatial Queries SpatialRepository is a dedicated Repository for spatial queries. - Spring Data Neo4j provides an optional dependency to neo4j-spatial which is an advanced library + Spring Data Neo4j provides an optional dependency to neo4j-spatial which is an advanced library for GIS operations. So if you include the maven dependency in your pom.xml, Neo4j-Spatial and the required SPATIAL index provider is available. @@ -28,12 +28,12 @@ - Fields of + Fields of Well Known Text
+ Neo4jTemplate + The Neo4jTemplate offers the convenient API of Spring templates for the Neo4j graph - database. + database. The Spring Data Neo4j Object Graph mapping builds upon the core functionality of the + template to persist objects to the graph and load them in a variety of ways. + The template handles the active mapping mode () transparently. + + + Besides methods for creating, storing and deleting entities, nodes and relationships in the graph, Neo4jTemplate + also offers a wide range of query methods. To reduce the proliferation of query methods a simple result handling + DSL was added. @@ -17,8 +26,9 @@ ResultConverter<FROM,TO> which takes care of custom conversions. By default most query methods can already handle conversions from and to: Paths, Nodes, Relationship and GraphEntities as well as conversions backed by registered ConversionServices. A converted Result<FROM> is an - Iterable<TO>. Results can be limited to a single value using the result.single() - method. It also offers support for a pure callback function using a Handler<T>. + Iterable<TO>. Results can be limited to a single value using the + result.single() or result.singleOrNull() + methods. It also offers support for a pure callback function using a Handler<T>.
@@ -37,7 +47,7 @@ The traversal methods are at the core of graph operations. The traverse() method covers the full traversal operation that takes a - TraversalDescription (typically built with the Traversal.description() + TraversalDescription (typically built with the template.getGraphDatabase().traversalDescription() DSL) and runs it from the given start node. traverse returns a Result<Path> to be used or transformed. @@ -62,18 +72,21 @@
Transactions - The Neo4jTemplate provides configurable implicit transactions for all its methods. By - default it creates a transaction for each call (which is a no-op if there is already a transaction - running). If you call the constructor with the useExplicitTransactions parameter set to - true, it won't create any transactions so you have to provide them using @Transactional - or the TransactionTemplate. + The Neo4jTemplate provides implicit transactions for some of its methods. For instance + save uses them. For other modifying operations please provide Spring Transaction management + using @Transactional or the TransactionTemplate.
Neo4j REST Server - If the template is configured to use a RestGraphDatabase the expensive operations + If the template is configured to use a SpringRestGraphDatabase the operations that would + be expensive over the wire, like traversals and querying are executed efficiently on the server side by using the REST API to forward - those calls. All the other template methods require single network operations. + those calls. All the other template methods require individual network operations. + + The REST-batch-mode of the SpringRestGraphDatabase is not yet exposed via the template, but it is available + via the graph database. +
diff --git a/src/docbkx/reference/programming-model/transactions.xml b/src/docbkx/reference/programming-model/transactions.xml index d38081147..0f210754d 100644 --- a/src/docbkx/reference/programming-model/transactions.xml +++ b/src/docbkx/reference/programming-model/transactions.xml @@ -4,14 +4,24 @@ Transactions Neo4j is a transactional database, only allowing modifications to be performed within transaction - boundaries. Reading data does however not require transactions. + boundaries. Reading data does however not require transactions. Spring Data Neo4j integrates nicely + with both the declarative transaction support with @Transactional as well as the + manual transaction handling with TransactionTemplate. It also supports the rollback + mechanisms of the Spring Testing library. Spring Data Neo4j integrates with transaction managers configured using Spring. The simplest - scenario of just running the graph database uses a SpringTransactionManager provided by the - Neo4j kernel to be used with Spring's JtaTransactionManager. That is, configuring Spring to + scenario of just running the graph database uses a SpringTransactionManager provided by the + Neo4j kernel to be used with Spring's JtaTransactionManager. That is, configuring Spring to use Neo4j's transaction manager. + + + To avoid name collisons the transaction manager configured by Spring Data Neo4j is called neo4jTransactionManager + and is aliased to transactionManager. So defining a separate transactionManager bean should not + interfere with Spring Data Neo4j operations. + + The explicit XML configuration given below is encoded in the Neo4jConfiguration @@ -22,7 +32,8 @@ Simple transaction manager configuration - + @@ -35,12 +46,12 @@ - + ]]> For scenarios with multiple transactional resources there are two options. The first option - is to have Neo4j participate in the externally configured transaction manager by using the + is to have Neo4j participate in the externally configured transaction manager using the Spring support in Neo4j by enabling the configuration parameter for your graph database. Neo4j will then use Spring's transaction manager instead of its own. @@ -49,13 +60,15 @@ - + - + From e22f052bd4945ebc2f534e53422c4099b901cf53 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Thu, 15 Dec 2011 13:42:14 +0100 Subject: [PATCH 4/8] cineasts: changed usages of Person to concrete types Actor and Director --- .../src/main/java/org/neo4j/cineasts/domain/Movie.java | 8 ++++---- .../src/main/java/org/neo4j/cineasts/domain/Role.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Movie.java b/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Movie.java index c7e4f4fe0..3c6c88406 100644 --- a/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Movie.java +++ b/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Movie.java @@ -26,10 +26,10 @@ public class Movie { String description; @RelatedTo(type="DIRECTED", direction = INCOMING) - Person director; + Director director; @RelatedTo(type = "ACTS_IN", direction = INCOMING) - Set actors; + Set actors; @RelatedToVia(type = "ACTS_IN", direction = INCOMING) Iterable roles; @@ -57,7 +57,7 @@ public class Movie { this.title = title; } - public Collection getActors() { + public Collection getActors() { return actors; } @@ -106,7 +106,7 @@ public class Movie { return allRatings == null ? Collections.emptyList() : IteratorUtil.asCollection(allRatings); } - public Person getDirector() { + public Director getDirector() { return director; } diff --git a/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Role.java b/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Role.java index d58ba10d1..fdbc52690 100644 --- a/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Role.java +++ b/spring-data-neo4j-examples/cineasts/src/main/java/org/neo4j/cineasts/domain/Role.java @@ -13,7 +13,7 @@ import org.springframework.data.neo4j.annotation.StartNode; public class Role { @GraphId Long id; @EndNode Movie movie; - @StartNode Person actor; + @StartNode Actor actor; String name; @@ -38,7 +38,7 @@ public class Role { return movie; } - public Person getActor() { + public Actor getActor() { return actor; } From 6356ab063f174c80cc9d3a5b75df6e2df367f9f2 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Thu, 15 Dec 2011 14:17:42 +0100 Subject: [PATCH 5/8] fixed XML errors in docs --- src/docbkx/reference/programming-model/indexing.xml | 3 ++- src/docbkx/reference/programming-model/repositories.xml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/docbkx/reference/programming-model/indexing.xml b/src/docbkx/reference/programming-model/indexing.xml index cf13a6cc3..f8a6fb8e7 100644 --- a/src/docbkx/reference/programming-model/indexing.xml +++ b/src/docbkx/reference/programming-model/indexing.xml @@ -39,6 +39,7 @@ level attribute declares what will be used as index. Level.CLASS uses the class where the field was declared and Level.INSTANCE uses the class that is provided or of the actual entity instance. +
The indexes can be queried by using a repository (see ). @@ -170,7 +171,7 @@ personFulltextIndex.query("{name:*cha*}");
Neo4j Auto Indexes - Neo4j allows to configure auto-indexing + Neo4j allows to configure auto-indexing for certain properties on nodes and relationships. This auto-indexing differs from the approach used in Spring Data Neo4j because it only updates the indexes when the transaction is committed. So the index modifications will only be available after the successful commit. diff --git a/src/docbkx/reference/programming-model/repositories.xml b/src/docbkx/reference/programming-model/repositories.xml index 3e1b4b9d7..1e3f0ce37 100644 --- a/src/docbkx/reference/programming-model/repositories.xml +++ b/src/docbkx/reference/programming-model/repositories.xml @@ -232,8 +232,8 @@ Iterable findByParentAgeAndMarried(int age, boolean married) CypherDSL repository Spring Data Neo4j supports the new cypher-dsl to write Cypher queries in a statically typed way. Just by including - CypherDslRepository to your repository you get the Page query(Execute query, params, Pageable page) - and the EndResult query(Execute query, params);. The result type of the Cypher-DSL builder is called + CypherDslRepository to your repository you get the Page<T> query(Execute query, params, Pageable page) + and the EndResult<T> query(Execute query, params);. The result type of the Cypher-DSL builder is called Execute From 99c12a7e963aee8b4b5c7cbe608bf74ce8c548e6 Mon Sep 17 00:00:00 2001 From: Werner Nickl Date: Thu, 15 Dec 2011 14:32:45 +0100 Subject: [PATCH 6/8] - Made a IndexProvider.customizeIndexName(String indexName, Class type). If you override the default implementation you can do something with the name for the hi level indices. With this change you are independent for the most part from upcoming changes. - Added indexProvider related naming logic for relationships (compare with pull request #20 branch junisphere_unleash_IndexProvider features for node types) --- .../neo4j/support/index/IndexProvider.java | 11 ++++++- .../support/index/IndexProviderImpl.java | 17 +++++++---- ...elationshipTypeRepresentationStrategy.java | 30 +++++++++++++------ .../TypeRepresentationStrategyFactory.java | 12 ++++---- 4 files changed, 48 insertions(+), 22 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java index be7fbdf73..d7a7a011f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProvider.java @@ -44,9 +44,18 @@ public interface IndexProvider { /** * adjust your indexName for the "__types__" indices * - * @param Class type + * @param type * @return prefixed indexName for Type */ String createIndexValueForType(Class type); + + /** + * possibility to do something with the high level index name + * + * @param indexName + * @param type + * @return + */ + String customizeIndexName(String indexName, Class type); } \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java index ab2d8bd3f..7e7f164da 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/index/IndexProviderImpl.java @@ -58,16 +58,16 @@ public class IndexProviderImpl implements IndexProvider { } final Neo4jPersistentEntityImpl persistentEntity = mappingContext.getPersistentEntity(type); - if (indexName == null) indexName = Indexed.Name.get(type); + if (indexName == null) indexName = customizeIndexName(Indexed.Name.get(type), type); final boolean useExistingIndex = indexType == null; if (useExistingIndex) { - if (persistentEntity.isNodeEntity()) return (Index) graphDatabase.getIndex(indexName); - if (persistentEntity.isRelationshipEntity()) return (Index) graphDatabase.getIndex(indexName); + if (persistentEntity.isNodeEntity() || persistentEntity.isRelationshipEntity()) return (Index) graphDatabase.getIndex(indexName); throw new IllegalArgumentException("Wrong index type supplied: " + type + " expected Node- or Relationship-Entity"); } - if (persistentEntity.isNodeEntity()) return (Index) createIndex(Node.class, indexName, indexType); + if (persistentEntity.isNodeEntity()) + return (Index) createIndex(Node.class, indexName, indexType); if (persistentEntity.isRelationshipEntity()) return (Index) createIndex(Relationship.class, indexName, indexType); throw new IllegalArgumentException("Wrong index type supplied: " + type + " expected Node- or Relationship-Entity"); @@ -99,11 +99,11 @@ public class IndexProviderImpl implements IndexProvider { final Class declaringType = property.getOwner().getType(); final String providedIndexName = indexedAnnotation==null || indexedAnnotation.indexName().isEmpty() ? null : indexedAnnotation.indexName(); final Indexed.Level level = indexedAnnotation == null ? Indexed.Level.CLASS : indexedAnnotation.level(); - String indexName = Indexed.Name.get(level, declaringType, providedIndexName, instanceType); + String indexName = customizeIndexName(Indexed.Name.get(level, declaringType, providedIndexName, instanceType), instanceType); if (!property.isIndexed() || property.getIndexInfo().getIndexType() == IndexType.SIMPLE) { return getIndex(declaringType, indexName, IndexType.SIMPLE); } - String defaultIndexName = Indexed.Name.get(level, declaringType, null, instanceType.getClass()); + String defaultIndexName = customizeIndexName(Indexed.Name.get(level, declaringType, null, instanceType.getClass()), instanceType); if (providedIndexName==null || providedIndexName.equals(defaultIndexName)) throw new IllegalStateException("Index name for "+property+" must differ from the default name: "+defaultIndexName); return getIndex(declaringType, indexName, property.getIndexInfo().getIndexType()); } @@ -112,5 +112,10 @@ public class IndexProviderImpl implements IndexProvider { public String createIndexValueForType(Class type) { return type.getName(); } + + @Override + public String customizeIndexName(String indexName, Class type) { + return indexName; + } } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java index 802d2a11b..179a99f44 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java @@ -24,6 +24,7 @@ import org.springframework.data.neo4j.annotation.RelationshipEntity; import org.springframework.data.neo4j.core.GraphDatabase; import org.springframework.data.neo4j.core.RelationshipTypeRepresentationStrategy; import org.springframework.data.neo4j.support.index.ClosableIndexHits; +import org.springframework.data.neo4j.support.index.IndexProvider; import org.springframework.data.neo4j.support.index.IndexType; public class IndexingRelationshipTypeRepresentationStrategy implements RelationshipTypeRepresentationStrategy { @@ -31,11 +32,14 @@ public class IndexingRelationshipTypeRepresentationStrategy implements Relations public static final String INDEX_NAME = "__rel_types__"; public static final String TYPE_PROPERTY_NAME = "__type__"; public static final String INDEX_KEY = "className"; - private GraphDatabase graphDb; + private final GraphDatabase graphDb; private final EntityTypeCache typeCache; + + private final IndexProvider indexProvider; - public IndexingRelationshipTypeRepresentationStrategy(GraphDatabase graphDb) { + public IndexingRelationshipTypeRepresentationStrategy(GraphDatabase graphDb, IndexProvider indexProvider) { this.graphDb = graphDb; + this.indexProvider = indexProvider; typeCache = new EntityTypeCache(); } @@ -50,12 +54,16 @@ public class IndexingRelationshipTypeRepresentationStrategy implements Relations } private void addToTypesIndex(Relationship node, Class entityClass) { - Class type = entityClass; - while (type.getAnnotation(RelationshipEntity.class) != null) { - getRelTypesIndex().add(node, INDEX_KEY, type.getName()); - type = type.getSuperclass(); - } - } + Class type = entityClass; + while (type.getAnnotation(RelationshipEntity.class) != null) { + String value = entityClass.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(entityClass); + + getRelTypesIndex().add(node, INDEX_KEY, value); + type = type.getSuperclass(); + } + } @Override public ClosableIterable findAll(Class clazz) { @@ -63,7 +71,11 @@ public class IndexingRelationshipTypeRepresentationStrategy implements Relations } private ClosableIterable findAllRelBacked(Class clazz) { - final IndexHits allEntitiesOfType = getRelTypesIndex().get(INDEX_KEY, clazz.getName()); + String value = clazz.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(clazz); + + final IndexHits allEntitiesOfType = getRelTypesIndex().get(INDEX_KEY, value); return new ClosableIndexHits(allEntitiesOfType); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java index 14492e797..de3a25ad3 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/TypeRepresentationStrategyFactory.java @@ -79,7 +79,7 @@ public class TypeRepresentationStrategyFactory { } public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy() { - return strategy.getRelationshipTypeRepresentationStrategy(graphDatabaseService); + return strategy.getRelationshipTypeRepresentationStrategy(graphDatabaseService, indexProvider); } public void setIndexProvider(IndexProvider indexProvider) { @@ -94,7 +94,7 @@ public class TypeRepresentationStrategyFactory { } @Override - public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { + public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { return new NoopRelationshipTypeRepresentationStrategy(); } }, @@ -105,8 +105,8 @@ public class TypeRepresentationStrategyFactory { } @Override - public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { - return new IndexingRelationshipTypeRepresentationStrategy(graphDatabaseService); + public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { + return new IndexingRelationshipTypeRepresentationStrategy(graphDatabaseService, indexProvider); } }, Noop { @@ -116,13 +116,13 @@ public class TypeRepresentationStrategyFactory { } @Override - public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService) { + public RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider) { return new NoopRelationshipTypeRepresentationStrategy(); } }; public abstract NodeTypeRepresentationStrategy getNodeTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider); - public abstract RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService); + public abstract RelationshipTypeRepresentationStrategy getRelationshipTypeRepresentationStrategy(GraphDatabase graphDatabaseService, IndexProvider indexProvider); } } From c9996cff4436e685f38a015a58ce632c4f96f8b7 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Mon, 19 Dec 2011 10:24:43 +0100 Subject: [PATCH 7/8] updated documentation for spring data neo4j 2.0 --- src/docbkx/reference/aspectj-details.xml | 2 +- src/docbkx/reference/attachdetach.png | Bin 0 -> 123456 bytes src/docbkx/reference/cross-store.xml | 5 ++- src/docbkx/reference/performance.xml | 31 +++++++++---- .../programming-model/attachdetach.xml | 23 +++++++--- .../programming-model/beanvalidation.xml | 5 ++- .../programming-model/node-entities.xml | 20 +++++++++ .../programming-model/repositories.xml | 2 +- .../programming-model/simple_mapping.xml | 7 +++ .../programming-model/transactions.xml | 2 +- .../typerepresentationstrategy.xml | 8 ++-- src/docbkx/reference/samples.xml | 34 +++++++++++++- src/docbkx/reference/setup.xml | 42 ++++++++++++++---- 13 files changed, 146 insertions(+), 35 deletions(-) create mode 100644 src/docbkx/reference/attachdetach.png diff --git a/src/docbkx/reference/aspectj-details.xml b/src/docbkx/reference/aspectj-details.xml index ccca1cab4..62b3962dc 100644 --- a/src/docbkx/reference/aspectj-details.xml +++ b/src/docbkx/reference/aspectj-details.xml @@ -3,7 +3,7 @@ AspectJ details - The object graph mapper of Spring Data Neo4j relies heavily on AspectJ. AspectJ is a Java implementation + The advanced mapping mode of Spring Data Neo4j relies heavily on AspectJ. AspectJ is a Java implementation of the aspect-oriented programming paradigm that allows easy extraction and controlled application of so-called cross-cutting concerns. Cross-cutting concerns are typically repetitive tasks in a system (e.g. logging, diff --git a/src/docbkx/reference/attachdetach.png b/src/docbkx/reference/attachdetach.png new file mode 100644 index 0000000000000000000000000000000000000000..4d535acc683af2b8add916f3ef6f49de15091322 GIT binary patch literal 123456 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%0A< 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

F0%}Y59WOLfs&dqG-Tq}U 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 RWdQ+yk0lhu3&jjy{x9W^9M%8; literal 0 HcmV?d00001 diff --git a/src/docbkx/reference/cross-store.xml b/src/docbkx/reference/cross-store.xml index ae617c0de..b94389069 100644 --- a/src/docbkx/reference/cross-store.xml +++ b/src/docbkx/reference/cross-store.xml @@ -3,7 +3,8 @@ Cross-store persistence - The Spring Data Neo4j project support cross-store persistence, which allows for parts of the data to be + The Spring Data Neo4j project support cross-store persistence for the advanced mapping mode, + which allows for parts of the data to be stored in a traditional JPA data store (RDBMS), and other parts in a graph store. This means that an entity can be partially stored in e.g. MySQL, and partially stored in Neo4j. @@ -23,7 +24,7 @@ A backing node in the graph store is only created when the entity has been assigned a JPA ID. Only then will the association between the two stores be established. Until the entity has been persisted, its state is just kept inside the POJO (in detached state), and then flushed to the backing graph - database on persist(). + database on the persist operation. The association between the two entities is maintained via a FOREIGN_ID field in the node, that diff --git a/src/docbkx/reference/performance.xml b/src/docbkx/reference/performance.xml index 10b2b4eaa..501f53786 100644 --- a/src/docbkx/reference/performance.xml +++ b/src/docbkx/reference/performance.xml @@ -8,7 +8,7 @@ of using Spring Data Neo4j instead of the Neo4j API directly.

- When is Spring Data Neo4j right + When to use Spring Data Neo4j The focus of Spring Data Neo4j is to add a convenience layer on top of the Neo4j API. This enables developers to get up and running with a graph database very quickly, having their domain objects @@ -16,23 +16,38 @@ more efficient ways to explore and process the graph - if the performance requirements demand it. - Like any other object mapping framework, the domain entities that are created, read, or persisted + Like with any other object mapping framework, the domain entities that are created, read, or persisted represent only a small fraction of the data stored in the database. This is the set needed for a certain use-case to be displayed, edited or processed in a low throughput fashion. The main advantages of using an object mapper in this case are the ease of use of real domain objects in your business - logic and also with existing + logic and also the integration with existing frameworks and libraries that expect Java POJOs as input or create them as results. Spring Data Neo4j, however, was not designed with a major focus on performance. It does add some overhead - to pure graph operations. Something to keep in mind is that any access of properties and relationships - will in general read through down to the database. To avoid multiple reads, it is sensible to store the - result in a local variable in suitable scope (e.g. method, class or jsp). - + to pure graph operations. + Most of the overhead comes from the use of the Java Reflection API, which is used to provide information about annotations, fields and constructors. Some of the information is already cached - by the JVM and the library, so that only the first access gets a performance penalty. + by the JVM and the library infrastructure from Spring-Data-Commons, so that only the first access gets a performance penalty. + Other reflection penalties like field or method access will occur all the time. + + For the simple mapping it is important to be aware of the size graph of data that is pulled out of the + graph database in a single read and copied to domain entities. That's why Spring Data Neo4j loads + related data not by default. You have to provide an indicator (@Fetch) to do so. Alternatively + the Neo4jTemplate.fetch method offers means of of loading entities and collections of those. + + + For the advanced mapping mode keep in mind that any access of properties and relationships + will in general read through down to the database. To avoid multiple reads, it is sensible to store the + result in a local variable in suitable scope (e.g. method, class or jsp). + + + To evaluate if the performance of Spring Data Neo4j impacts a certain use-case it is sensible to define + performance requirements and measure the actual time in realistic test scenarios for the use-case. Only if + Spring Data Neo4j doesn't perform as fast as required it is recommended to drop down to the native Neo4j API. +
diff --git a/src/docbkx/reference/programming-model/attachdetach.xml b/src/docbkx/reference/programming-model/attachdetach.xml index 42e558b77..a8ea87689 100644 --- a/src/docbkx/reference/programming-model/attachdetach.xml +++ b/src/docbkx/reference/programming-model/attachdetach.xml @@ -1,24 +1,35 @@
- Detached node entities + Detached node entities in advanced mapping mode + + This section only applies to the advanced mapping (AspectJ-backed). The simple mapping always detaches entities on + load as it copies the data out of the graph into the entities and stores it back fully too. + Node entities can be in two different persistence states: attached or detached. By default, newly created node - entities are in the detached state. When persist() is called on the entity, it becomes + entities are in the detached state. When persist() or template.save() is called on the entity, it becomes attached to the graph, and its properties and relationships are stores in the database. If - persist() is not called within a transaction, it automatically creates an implicit - transaction for the operation. + the save operation is not called within a transaction, it automatically creates an implicit + transaction only for the operation. Changing an attached entity inside a transaction will immediately write through the changes to the datastore. Whenever an entity is changed outside of a transaction it becomes detached. The - changes are stored in the entity itself until the next call to persist(). + changes are stored in the entity (its fields) itself until the next call to a save operation. All entities returned by library functions are initially in an attached state. Just as with any other entity, changing them outside of a transaction detaches them, and they must be reattached with persist() for the data to be saved. + + + + + + + @@ -82,7 +93,7 @@ movie.setTopActor(actor); It is a matter of Java references and is not related to the data model in the database. - The persist operation (merge) stores all properties of the entity to the graph database + The save operation (merge) stores all properties of the entity to the graph database and puts the entity in attached mode. There is no need to update the reference to the Java POJO as the underlying backing node handles the read-through transparently. If multiple object instances that point to the same node are persisted, the ordering is not important diff --git a/src/docbkx/reference/programming-model/beanvalidation.xml b/src/docbkx/reference/programming-model/beanvalidation.xml index 989b4060a..e3fc8e3f8 100644 --- a/src/docbkx/reference/programming-model/beanvalidation.xml +++ b/src/docbkx/reference/programming-model/beanvalidation.xml @@ -3,11 +3,12 @@
Bean validation (JSR-303) - Spring Data Neo4j supports property-based validation support. When a property is changed, it is + Spring Data Neo4j supports property-based validation support. When a property is changed and persisted, it is checked against the annotated constraints, e.g. @Min, @Max, @Size, etc. Validation errors throw a ValidationException. The validation support that comes with Spring is used for evaluating the constraints. To use this feature, a validator - has to be registered with the GraphDatabaseContext. + has to be registered with the Neo4jTemplate, which is done automatically by the Neo4jConfiguration + if one is present in the Spring Config. Bean validation diff --git a/src/docbkx/reference/programming-model/node-entities.xml b/src/docbkx/reference/programming-model/node-entities.xml index ed7c4b08f..83748f340 100644 --- a/src/docbkx/reference/programming-model/node-entities.xml +++ b/src/docbkx/reference/programming-model/node-entities.xml @@ -39,6 +39,26 @@ public class Movie {
+
+ @GraphId: Neo4j -id field + + For the simple mapping this is a required field which must be of type Long. It is used + by Spring Data Neo4j to store the node or relationship-id to re-connect the entity to the graph. + + + + It must not be a primitive type because then the "non-attached" case can not be represented as the + default value 0 would point to the reference node. Please make also sure that + an equals() and hashCode() method have to be provided which take the id + field into account (and also handle the "non-attached", null case). + + + + For the advanced mapping such a field is optional. Only if the underlying id has to be accessed, it is + needed. + +
+
@GraphProperty: Optional annotation for property fields diff --git a/src/docbkx/reference/programming-model/repositories.xml b/src/docbkx/reference/programming-model/repositories.xml index 1e3f0ce37..3c391f11e 100644 --- a/src/docbkx/reference/programming-model/repositories.xml +++ b/src/docbkx/reference/programming-model/repositories.xml @@ -314,7 +314,7 @@ Iterable davesFriends = repo.findAllByTraversal(dave, Composing repositories , PersonRepositoryExtension {} -// configure the repositories, preferably via the datagraph:repositories namespace +// configure the repositories, preferably via the neo4j:repositories namespace // (template reference is optional) diff --git a/src/docbkx/reference/programming-model/simple_mapping.xml b/src/docbkx/reference/programming-model/simple_mapping.xml index be19a3ac5..9658ea7c5 100644 --- a/src/docbkx/reference/programming-model/simple_mapping.xml +++ b/src/docbkx/reference/programming-model/simple_mapping.xml @@ -30,6 +30,13 @@ for classes. Both Neo4jPersistentEntitity as well as Neo4jPersistentProperty provide access to that information on their scope. + + + Please note that if you have two collections in an entity pointing to the same relationship and one of them has data and the other is + empty due to the nature of persisting it, one will override the other in the graph so that you might end up with no data. If you want + a relationship-collection to be ignored on save set it to null. + + Examples for loading entities from the graph diff --git a/src/docbkx/reference/programming-model/transactions.xml b/src/docbkx/reference/programming-model/transactions.xml index 0f210754d..c8980ebc4 100644 --- a/src/docbkx/reference/programming-model/transactions.xml +++ b/src/docbkx/reference/programming-model/transactions.xml @@ -82,7 +82,7 @@ One can also configure a stock XA transaction manager (e.g. Atomikos, JOTM, App-Server-TM) to be - used with Neo4j and the other resources. For a bit less secure but fast 1 phase commit best effort, + used with Neo4j and the other resources. For a bit less secure but fast 1-phase-commit-best-effort, use ChainedTransactionManager, which comes bundled with Spring Data Neo4j. It takes a list of transaction managers as constructor params and will handle them in order for transaction start and commit (or rollback) in the reverse order. diff --git a/src/docbkx/reference/programming-model/typerepresentationstrategy.xml b/src/docbkx/reference/programming-model/typerepresentationstrategy.xml index 22eaa80a6..e4e388f41 100644 --- a/src/docbkx/reference/programming-model/typerepresentationstrategy.xml +++ b/src/docbkx/reference/programming-model/typerepresentationstrategy.xml @@ -8,16 +8,16 @@ this type information is saved in the graph database. - Implementations of TypeRepresentationStrategy take care of persisting this information on entity instance + Implementations of TypeRepresentationStrategy take care of persisting this information during entity instance creation. They also provide the repository methods that use this type information to perform their operations, - like findAll and count. + like findAll and count. The derived finderMethods also use the type information for graph global queries. There are three available implementations for node entities to choose from. - IndexingNodeTypeRepresentationStrategy + IndexingNodeTypeRepresentationStrategy this is the default strategy used. Stores entity types in the integrated index. Each entity node gets indexed with its type and @@ -25,7 +25,7 @@ is called__types__. Additionally, in order to get the type of an entity node, each node has a property __type__ - with the type of that entity. + with the fully qualified type of that entity. diff --git a/src/docbkx/reference/samples.xml b/src/docbkx/reference/samples.xml index 04f318781..07489a7f2 100644 --- a/src/docbkx/reference/samples.xml +++ b/src/docbkx/reference/samples.xml @@ -24,6 +24,10 @@ The unit tests demonstrate some other features of Spring Data Neo4j as well. The sample comes with a minimal configuration for Maven and Spring to get up and running quickly. + + The Hello Worlds application is available both for the simple mapping (hello-worlds) + and for the advanced mapping (hello-world-aspects). + Executing the application creates the following graph in the graph database: @@ -42,7 +46,7 @@ roles in different movies. It also uses graph traversal operations to calculate the Bacon number of any given actor. This sample application shows the usage of Spring Data Neo4j in a more complex setting, using several - annotated entities and relationships as well as indexes and graph traversals. + annotated entities and relationships as well as indexes and in-graph indexes and graph traversals. See the readme file for instructions on how to compile and run the application. @@ -98,5 +102,33 @@
+
+ Cineasts social movie database + + The cineasts.net application was introduced extensively in the first part of this guide, the + tutorial. The tutorial covers the development of the simple mapping version of cineasts. + + + To document the differences, versions for the advanced mapping (cineasts-aspects) + and accessing the remote server (cineasts-rest) are also available. + + + A online version of cineasts can be found on cineasts.net. + A sample dataset of the cineasts databse is available at the neo4j sample-data page. + + + This is a subset of the visualization of the cineasts graph for the "Matrix" movie. + + + + + + + + + + + +
diff --git a/src/docbkx/reference/setup.xml b/src/docbkx/reference/setup.xml index 5c122cd34..f0104b493 100644 --- a/src/docbkx/reference/setup.xml +++ b/src/docbkx/reference/setup.xml @@ -17,15 +17,15 @@
Dependencies for Spring Data Neo4j Simple Mapping - For the POJO mapping it is enough to add the org.springframework.data:spring-data-neo4j:2.0.0.RC1 dependency - to your project. If you want to use the Cypher query language please add org.neo4j:neo4j-cypher:1.5 + For the simple POJO mapping it is enough to add the org.springframework.data:spring-data-neo4j:2.0.0.RELEASE dependency + to your project. If you want to use the Cypher query language please add org.neo4j:neo4j-cypher:1.6.M02 Maven dependencies for Spring Data Neo4j org.springframework.data spring-data-neo4j -2.0.0.RC1 +2.0.0.RELEASE ]]> @@ -43,8 +43,8 @@ org.springframework.data spring-data-neo4j-aspects - 2.0.0.RC1 + 2.0.0.RELEASE @@ -139,7 +139,7 @@ repositories { [ org.neo4j neo4j-cypher - 1.5 + 1.6.M02 ] ]]> @@ -272,6 +272,29 @@ repositories { ]]>
+
+ Repository Configuration + + Spring Data Neo4j repositories are configured using the <neo4j:repositories> + element which defines the base-package (or packages) for the repositories. + A reference to an existing Neo4jTemplate bean reference can be passed in as well. + + + As Spring Data Neo4j repositories build upon the infrastructure provided by + + Spring Data Commons, + the configuration options for repositories described there work here as well. + + + XML configuration for repositories + + + + + ]]> + +
Java-based bean configuration @@ -279,7 +302,7 @@ repositories { - For those not familiar with Java-based bean metadata in Spring, we recommend that you + For those not familiar with Java-based bean configuration in Spring, we recommend that you read up on it first. The Spring documentation has a high-level introduction as well as @@ -316,7 +339,8 @@ repositories { - Additional beans can be configured to be included in the Neo4j-Configuration. ConversionService for custom conversions, + Additional beans can be configured to be included in the Neo4j-Configuration just by defining them in the Spring context. + ConversionService for custom conversions, Validators for bean validation, TypeRepresentationStrategyFactory for configuring the in graph type representation, IndexProviders for custom index handling (e.g. for multi-tenancy), Entity-Instantiators (with their config) to have more control over the creation of entity instances and much more. From 01c09627d67fb728b6922f7f9b7accbc4073da02 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Tue, 20 Dec 2011 13:13:26 +0100 Subject: [PATCH 8/8] updated screencast link for cypher --- src/docbkx/reference/attachdetach.key | Bin 0 -> 259526 bytes src/docbkx/reference/neo4j.xml | 3 ++- .../programming-model/repositories.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 src/docbkx/reference/attachdetach.key diff --git a/src/docbkx/reference/attachdetach.key b/src/docbkx/reference/attachdetach.key new file mode 100644 index 0000000000000000000000000000000000000000..0d3f7d67fee5e88a8b2d43162351d1b869dd3f73 GIT binary patch literal 259526 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�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"Cypher" which draws from many sources. It resembles SQL but with an iconic representation of patterns in the graph (concepts drawn from SPARQL). The Cypher execution engine was written in Scala to leverage the high expressiveness for lazy sequence operations of the language and the - parser combinator library. + parser combinator library. A screencast explaining the possibilities in detail can be found on the + Neo4j video site. Cypher queries always begin with a start set of nodes. Those can be either expressed by their diff --git a/src/docbkx/reference/programming-model/repositories.xml b/src/docbkx/reference/programming-model/repositories.xml index 3c391f11e..d7cb32783 100644 --- a/src/docbkx/reference/programming-model/repositories.xml +++ b/src/docbkx/reference/programming-model/repositories.xml @@ -158,7 +158,7 @@
Cypher examples - There is a screencast available showing many features of the query language. + There is a screencast available showing many features of the query language. The following examples are taken from the cineasts dataset of the tutorial section.