An implementation of the Blueprints API over JPA(1).
The reason I implemented blueprints-jpa-graph is that I was attracted to the ObjectDB(2)'s performance(3).
- 1:JPA: http://en.wikipedia.org/wiki/Java_Persistence_API
- 2:ObjectDB : http://www.objectdb.com/
- 3:JPA Performance Benchmark : http://www.jpab.org/All/All/All.html
- All Blueprints features support, except ThreadedTransactions
- Sail support
- Rexster support
- GraphFactory support
- Java 5, 6 or 7
Which one you need depends on what you want to use with it:
- IndexableGraph and KeyIndexableGraph have poorer performance than native GraphDBs.
- In case of using EclipseLink and Hibernate, adding massive data at one commit is very slow, then we should divide massive data into a plurality of sub-blocks.
OrientDB | JPA:ObjectDB(*1) | JPA:EclipseLink+Derby | JPA:Hibernate+Derby | DEX | |
---|---|---|---|---|---|
2.5.0-SNAPSHOT(*2) | 2.5.0-SNAPSHOT(*3) | 2.5.0-SNAPSHOT(*4) | 2.5.0-SNAPSHOT(*5) | 2.4.0(*6) | |
VertexTestSuite | 8212.51 | 3662.94 | 4001.32 | 7233.31 | 5051.43 |
VertexQueryTestSuite | 3808.78 | 804.28 | 762.79 | 1943.51 | 1482.64 |
EdgeTestSuite | 9863.45 | 2282.13 | 2386.27 | 5482.16 | 4416.40 |
GraphTestSuite | 11141.28 | 10893.83 | 8591.78 | 15962.46 | 5631.75 |
GraphQueryTestSuite | 1456.90 | 336.30 | 357.44 | 1585.12 | 633.13 |
GraphMLReaderTestSuite | 3096.25 | 1526.83 | 1581.42 | 3710.91 | 2771.08 |
IndexableGraphTestSuite | 5669.64 | 1307.18 | 1176.68 | 3099.10 | - |
IndexTestSuite | 2255.25 | 541.50 | 526.15 | 1345.00 | - |
KeyIndexableGraphTestSuite | 3027.29 | 1780.79 | 2209.91 | 5404.79 | - |
TransactionGraphTestSuite | 17533.41 | 14936.44 | 22549.49 | 36736.34 | - |
(msec) |
*1: ObjectDB 2.5.4
*2: mvn test -Dtest=OrientGraphLightweightEdgesTest
*3: mvn -f pom-objectdb.xml test -Dtest=JpaGraphTest
*4: mvn -f pom-eclipselink.xml test -Dtest=JpaGraphTest
*5: mvn -f pom-hibernate.xml test -Dtest=JpaGraphTest
*6: mvn test -Dtest=DexGraphTest
% mvn install -DskipTests=true
Running Property Graph Model Test Suite
% ant test-all
These will probably be good references for that you integrate into your system with JpaGraph.
Running Gremlin with JpaGraph
Running Rexster with JpaGraph
If using GraphFactory to instantiate a JpaGraph, the following properties will apply:
Key | Description |
---|---|
blueprints.jpagraph.unit-name | set a persistance unit name: 'EclipseLinkUnit', 'HibernateUnit', or 'ObjectDbUnit' |
blueprints.jpagraph.persistence-unit-properties | set persistence unit properties if it is necessary |
<dependency>
<groupId>com.wingnest.blueprints</groupId>
<artifactId>blueprints-jpa-graph</artifactId>
<version>2.5.0_01</version>
</dependency>
Repository: http://www.wingnest.com/mvn-repo/
Blueprints JPA Graph is distributed under the Apache 2 licence.