Eclipse JNoSQL

Eclipse JNoSQL is an open-source Java framework that simplifies integration with NoSQL databases through Jakarta EE standards. It implements Jakarta NoSQL and Jakarta Data and integrates with Jakarta Query, bringing together object mapping, repositories, templates, and expressive query capabilities for Java applications.

Jakarta NoSQL defines persistence and object mapping APIs, Jakarta Data provides repository-based data access, and Jakarta Query establishes a common object-oriented query language. Eclipse JNoSQL brings these complementary programming models together while respecting the capabilities of different NoSQL databases.

Eclipse JNoSQL supports six NoSQL database models: Key-Value, Document, Wide-Column, Graph, Time Series, and Vector. It offers common persistence abstractions and specialized APIs for database-model-specific capabilities.

The framework integrates with Jakarta CDI and MicroProfile Config and supports applications running in Java SE and compatible Jakarta EE environments.

Object Mapping with Jakarta NoSQL

Jakarta NoSQL provides annotations for mapping Java objects to NoSQL databases. Developers work with Java entities while Eclipse JNoSQL handles mapping through the configured database provider.

@Entity
public class Product {

    @Id
    private String id;

    @Column
    private String name;

    @Column
    private BigDecimal price;

    // Constructors and accessors
} 

Persistence with the Template API

Jakarta NoSQL defines the common Template interface, providing persistence operations independently of a specific NoSQL database model. Eclipse JNoSQL integrates templates with CDI, allowing applications to inject the configured persistence implementation.

@Inject
Template template;

Product product = new Product(
    "p-1", "Keyboard",
    new BigDecimal("49.90"));

template.insert(product);

Optional<Product> result =
    template.find(Product.class, "p-1"); 

Specialized Templates for NoSQL Database Models

While the common Template API provides shared persistence operations, Eclipse JNoSQL also offers specialized interfaces that expose the capabilities of each database model.

  • KeyValueTemplate: Key-based access, storage, retrieval, and deletion.
  • DocumentTemplate: Document persistence, filtering, and fluent queries.
  • ColumnTemplate: Wide-Column persistence and queries adapted to column-oriented database structures.
  • GraphTemplate: Graph entities, relationships, edges, and graph-oriented operations.
  • TimeSeriesTemplate: Time-oriented persistence, temporal filtering, and time-based retrieval.
  • VectorTemplate: Vector persistence, similarity search, and vector-oriented queries.

For example, an application can inject a specialized template when it needs document-specific operations:

@Inject
DocumentTemplate documentTemplate; 

This approach allows developers to start with common persistence abstractions and use specialized operations when required, without hiding the differences between database models. Availability of specialized capabilities depends on the selected JNoSQL version and provider.

Repositories with Jakarta Data

Jakarta Data provides a repository-oriented programming model. Developers declare interfaces, and Eclipse JNoSQL supplies their persistence implementations.

@Repository
public interface ProductRepository
    extends BasicRepository<Product, String> {

    List<Product> findByName(String name);
} 

Repositories integrate with CDI and provide declarative persistence operations without requiring developers to implement database-access boilerplate.

@Inject
ProductRepository repository;

repository.save(product);

Optional<Product> result =
    repository.findById("p-1"); 

Repository capabilities, including derived queries, depend on the selected database model and provider. Not every NoSQL database supports filtering by arbitrary entity attributes.

Querying with Jakarta Query

Jakarta Query defines a common object-oriented query language used across Jakarta persistence specifications. It enables developers to express queries over Java entities using consistent language constructs.

Jakarta Query defines a Core language for broad persistence compatibility, including NoSQL databases, and an Extended language for database systems supporting more advanced query capabilities.

Jakarta Data repositories can declare queries using the @Query annotation:

@Repository
public interface ProductRepository
    extends BasicRepository<Product, String> {

    @Query("WHERE price > :minimumPrice")
    List<Product> findExpensive(
        @Param("minimumPrice")
        BigDecimal minimumPrice);
} 

Eclipse JNoSQL aligns its querying capabilities with Jakarta Query while retaining database-specific query operations. Support for particular query constructs depends on the database integration and the JNoSQL release.

Goals

  • Increase developer productivity through standardized Jakarta EE persistence APIs.
  • Implement Jakarta NoSQL and Jakarta Data and integrate the query language defined by Jakarta Query.
  • Provide rich object mapping integrated with Jakarta Contexts and Dependency Injection (CDI).
  • Support Jakarta NoSQL templates and Jakarta Data repositories as complementary persistence approaches.
  • Provide a common Template API alongside specialized templates for database-model-specific operations.
  • Support Key-Value, Document, Wide-Column, Graph, Time Series, and Vector database models.
  • Offer fluent Java query APIs, declarative queries, and expressive persistence operations while respecting database-specific capabilities.
  • Enable polyglot persistence using common abstractions without sacrificing database-specific functionality.
  • Support Java SE and Jakarta EE environments through CDI and externalized configuration.
  • Promote portability, extensibility, and maintainability across NoSQL database providers.

Learn More

State
Mature
Industry Collaborations
Latest Releases

From 2026-10-31 to 2017-03-15

Name Date Review
1.2.0 2026-10-31
1.1.20 2026-10-08
1.1.19 2026-09-29
1.1.18 2026-09-20
1.1.17 2026-08-30
1.1.16 2026-08-10
1.1.15 2026-07-03
1.1.14 2026-06-01
1.1.13 2026-04-06
1.1.12 2026-01-05
1.1.11 2025-11-16
1.1.10 2025-08-19
1.1.9 2025-07-30
1.1.8 2025-05-21
1.1.7 2025-05-08
1.1.6 2025-03-24
1.1.5 2025-03-23
1.1.4 2024-12-21
1.1.3 2024-10-24
1.1.2 2023-09-15
1.1.1 2023-05-25
1.1.0 2024-02-12
1.0.1 2023-07-31
1.0.0 2023-06-21
0.0.9 2019-05-15
0.0.8 2019-02-20
0.0.7 2018-10-03
0.0.6 2018-06-20
0.0.5 2018-04-04
0.0.4 2018-01-24
0.0.3 2017-10-14
0.0.2 2017-06-25
0.0.1 2017-03-15
Licenses
Eclipse Public License 1.0

The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.

Active Member Companies

Member companies supporting this project over the last three months.

    Is your logo missing?

    Contribution Activity
    Commits on this project (last 12 months)