Skip to content

APiGen Graph Database Support ​

Comprehensive graph database support for APiGen with Neo4j, Amazon Neptune, and ArangoDB. Build social networks, recommendation engines, and fraud detection systems with native graph query languages.

Features ​

  • Multi-Database Support: Neo4j (Cypher), Amazon Neptune (Gremlin), ArangoDB (AQL)
  • Unified Repository Interface: Consistent API across all graph database providers
  • Query Builders: Fluent interfaces for Cypher and Gremlin query construction
  • Spring Boot Integration: Auto-configuration with properties-based setup
  • Graph Operations:
    • CRUD operations (create, read, update, delete)
    • Relationship management
    • Path finding (shortest path)
    • Graph traversal (BFS, DFS)
    • Full-text search support

Database-Specific Features ​

Neo4j (Cypher) ​

Best for: Complex relationship queries, social networks, knowledge graphs

java
// Query with Cypher
CypherQueryBuilder query = CypherQueryBuilder.matchNode("p", "Product")
    .where("p.category = $category", "category", "Electronics")
    .where("p.price > $minPrice", "minPrice", 100.0)
    .returns("p")
    .orderBy("p.price", true)
    .limit(10)
    .build();

Amazon Neptune (Gremlin) ​

Best for: AWS-native deployments, real-time graph analysis

java
// Query with Gremlin
GremlinQueryBuilder query = GremlinQueryBuilder.vertices("Product")
    .has("category", "Electronics")
    .has("price", "gt", 100)
    .out("HAS_REVIEW")
    .limit(10)
    .valueMap()
    .build();

ArangoDB (AQL) ​

Best for: Multi-model use cases, flexible document + graph operations

java
// AQL Query - built-in path finding
String query = """
    FOR path IN 1..3 SHORTEST
    (OUTBOUND @start edges FILTER e.type IN @types)
    OUTBOUND @end
    RETURN [v IN path RETURN v]
    """;

Supported Graph Databases ​

DatabaseVersionQuery LanguageStatus
Neo4j5.xCypher✅ Supported
NeptuneLatestGremlin/TinkerPop✅ Supported
ArangoDB3.10+AQL✅ Supported

Quick Start ​

1. Add Dependency ​

gradle
dependencies {
    implementation 'com.jnzader:apigen-graph:1.0.0'
}

2. Create Your Entity ​

java
public class Product extends GraphEntity {
    public String name;
    public Double price;
    public String category;
    public Set<String> tags;
}

3. Implement Repository ​

java
@Repository
public class ProductRepository extends Neo4jRepository<Product> {

    public ProductRepository(Driver driver) {
        super(driver, "Product", Product.class);
    }
}

Released under the MIT License.