Chapter 5. Conjuring Magic - Spring Data Graph

That was the pure graph database. Using this in our domain would pollute our classes with lots of graph database details. We don't want that. Spring Data Graph promised to do the heavy lifting for us. So we checked that next. Spring Data Graph depends heavily on AspectJ magic. Some parts of our classes would behave differently, but it would not be visible in our code. We were going to give it a try.

First step was lots of Maven configuration.


<properties>
    <aspectj.version>1.6.11.RELEASE</aspectj.version>
</properties>

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-neo4j</artifactId>
  <version>1.0.0.M5</version>
</dependency>

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>${aspectj.version}</version>
</dependency>

<build> <plugins> <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.2</version>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <outxml>true</outxml>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
            <aspectLibrary>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-neo4j</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin> </plugins> </build>
            

The Spring configuration was much easier, thanks to a provided namespace.

<beans xmlns="http://www.springframework.org/schema/beans" ...
   xmlns:datagraph="http://www.springframework.org/schema/data/graph"
   xsi:schemaLocation="... http://www.springframework.org/schema/data/graph
   http://www.springframework.org/schema/data/graph/datagraph-1.0.xsd">

    <datagraph:config storeDirectory="data/graph.db"/>
</beans>