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.
@Entitypublic 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.
@InjectTemplate 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:
@InjectDocumentTemplate 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.
@Repositorypublic 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.
@InjectProductRepository 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:
@Repositorypublic 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
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 |
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.
Member companies supporting this project over the last three months.