A high-performance Object-Graph Mapping (OGM) library for the Apache TinkerPop graph stack.
Ferma is an Object-Graph Mapping (OGM) library for the Apache TinkerPop graph stack. It maps Java objects to graph elements like vertices and edges, providing a type-safe abstraction layer for interacting with graph databases. It solves the performance limitations of TinkerPop Frames and offers enhanced features for building graph-based applications.
Java developers building applications on TinkerPop-compatible graph databases like JanusGraph, Neo4j, or OrientDB who need a performant, type-safe OGM solution.
Developers choose Ferma for its significant performance gains over TinkerPop Frames, its flexible typing modes, comprehensive annotation support, and seamless integration with the full TinkerPop ecosystem, including Gremlin and various graph compute engines.
An ORM / OGM for the TinkerPop graph stack.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Byte Buddy for runtime code generation to implement abstract methods, avoiding proxy classes and significantly improving performance over TinkerPop Frames, as highlighted in the README.
Supports untyped, simple, and annotated modes for type resolution, allowing developers to choose the abstraction level, with clear examples provided for each mode in the documentation.
Offers a super-set of TinkerPop Frames annotations to reduce boilerplate code, enabling declarative definition of properties and relationships, as demonstrated in the annotated mode example.
Built directly on TinkerPop, providing full access to Gremlin queries, Gremlin Server, and graph compute engines, ensuring compatibility with databases like JanusGraph and Neo4j.
The README shows multiple typing modes and requires explicit class registration in annotated mode, leading to a steeper initial setup compared to simpler ORM solutions.
While Javadocs are available, the project lacks extensive tutorials or a large community, being a niche OGM focused on TinkerPop, which can hinder adoption and troubleshooting.
Ferma is specifically designed for Java, making it unsuitable for projects in other programming languages, limiting its use in polyglot environments.
For basic graph operations, the OGM abstraction might introduce unnecessary complexity and performance overhead compared to using raw Gremlin queries directly.
Ferma is an open-source alternative to the following products: