Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. TinkerPop
  3. Ferma

Ferma

Apache-2.0Javav3.3.2

A high-performance Object-Graph Mapping (OGM) library for the Apache TinkerPop graph stack.

Visit WebsiteGitHubGitHub
142 stars25 forks0 contributors

What is Ferma?

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.

Target Audience

Java developers building applications on TinkerPop-compatible graph databases like JanusGraph, Neo4j, or OrientDB who need a performant, type-safe OGM solution.

Value Proposition

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.

Overview

An ORM / OGM for the TinkerPop graph stack.

Use Cases

Best For

  • Replacing TinkerPop Frames in existing graph applications for better performance
  • Building type-safe Java applications on TinkerPop graph databases
  • Reducing boilerplate code in graph data models with annotations
  • Developing applications that require support for multiple graph databases
  • Leveraging TinkerPop features like Gremlin queries and graph compute engines through an OGM
  • Implementing complex graph relationships with abstract classes and interfaces

Not Ideal For

  • Projects using graph databases without Apache TinkerPop compatibility
  • Applications requiring minimal abstraction and direct, low-level graph manipulation
  • Teams seeking a widely-adopted OGM with extensive third-party integrations and community tutorials
  • Rapid prototyping in non-JVM languages where a graph OGM is needed

Pros & Cons

Pros

High-Performance Bytecode Generation

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.

Flexible Typing Modes

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.

Comprehensive Annotation Support

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.

Seamless TinkerPop Integration

Built directly on TinkerPop, providing full access to Gremlin queries, Gremlin Server, and graph compute engines, ensuring compatibility with databases like JanusGraph and Neo4j.

Cons

Complex Configuration and Setup

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.

Limited Ecosystem and Documentation

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.

Java-Only Solution

Ferma is specifically designed for Java, making it unsuitable for projects in other programming languages, limiting its use in polyglot environments.

Potential Overhead for Simple Use Cases

For basic graph operations, the OGM abstraction might introduce unnecessary complexity and performance overhead compared to using raw Gremlin queries directly.

Open Source Alternative To

Ferma is an open-source alternative to the following products:

TinkerPop Frames
TinkerPop Frames

TinkerPop Frames is a Java object-to-graph mapper for the TinkerPop graph computing framework, allowing developers to interact with graph databases using POJOs.

Frequently Asked Questions

Quick Stats

Stars142
Forks25
Contributors0
Open Issues11
Last commit4 years ago
CreatedSince 2014

Tags

#tinkerpop#orm#janusgraph#ogm#java#tinkerpop3#gremlin#engine#bytecode-generation#database-abstraction#java-orm#graph-database#neo4j#apache-tinkerpop

Built With

A
Apache TinkerPop
M
Maven
J
Java

Links & Resources

Website

Included in

TinkerPop190
Auto-fetched 19 hours ago

Related Projects

Gremlin ScalaGremlin Scala

[unmaintained] Scala wrapper for Apache TinkerPop 3 Graph DSL

Stars478
Forks74
Last commit3 years ago
gremlin-javascriptgremlin-javascript

JavaScript tools for graph processing in Node.js and the browser inspired by the Apache TinkerPop API

Stars215
Forks60
Last commit8 years ago
FramesFrames

An Object to Graph Framework (no longer active - see Apache TinkerPop)

Stars140
Forks37
Last commit5 years ago
ogreogre

Clojure library for querying Apache TinkerPop graphs

Stars130
Forks27
Last commit4 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub