Quarkus Jnosql
Introduction
The Quarkus NoSQL Extension facilitates seamless interaction between Quarkus and Eclipse JNoSQL, enabling easy integration with various NoSQL databases in Quarkus applications. By following the steps outlined in this documentation, Quarkus developers can effortlessly incorporate Eclipse JNoSQL into their projects, simplifying NoSQL database interactions and empowering the development of efficient and scalable applications. Eclipse JNoSQL adheres to two essential Jakarta EE specifications: Jakarta Data and Jakarta NoSQL.
Jakarta NoSQL is a Java framework designed to streamline the integration of Java applications with various NoSQL databases. It offers a consistent and easy-to-use API, allowing developers to interact with different NoSQL databases seamlessly.
On the other hand, the Jakarta Data specification provides an API for simplified data access to various database types, including relational and NoSQL databases. Java developers can access these repositories through multiple methods, such as composing custom queries on a Repository interface.
Integrating Eclipse JNoSQL into Quarkus projects ensures adherence to these Jakarta EE standards and leverages the benefits of standardized APIs for enhanced productivity and maintainability.
Why Use Quarkus JNoSQL Extension?
The Quarkus NoSQL Extension offers several advantages for developers:
-
Simplified NoSQL Integration: Abstracts the complexity of working with different NoSQL databases, providing a consistent API regardless of the underlying technology. Facilitates easy switching between databases or using multiple databases in a single application.
-
Type-Safe Queries: Empowers developers to write database queries using Java code rather than raw query strings, improving code readability and catching errors at compile-time.
-
Seamless Quarkus Integration: Utilizes Quarkus' fast startup times and efficient resource utilization while working with NoSQL databases, ensuring lightweight and responsive applications.
-
Database Agnosticism: Supports a wide range of NoSQL databases, including key-value stores, document databases, and column-family stores. Offers flexibility to choose the most suitable database for specific use cases without major code changes.
-
Rich Documentation and Ecosystem: Eclipse JNoSQL boasts a thriving community and comprehensive documentation, making it easy for developers to find support, tutorials, and examples. Integration with Quarkus allows tapping into the vibrant Quarkus ecosystem as well.
Installation
To use this extension, add the io.quarkiverse.jnosql:quarkus-jnosql
extension to your build file. For instance, with Maven, include the following dependency in your POM file:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql</artifactId>
<version>3.3.2</version>
</dependency>
Getting Started
Getting started with Quarkus JNoSQL is straightforward:
-
Add the Quarkus JNoSQL Extension to your project’s dependencies. You can find the latest version on Maven Central.
-
Define your entities using JNoSQL annotations. For example:
import jakarta.nosql.Column;
import jakarta.nosql.Entity;
import jakarta.nosql.Id;
@Entity
public class TestEntity {
@Id
private String id;
@Column
private String testField;
}
Key-Value Database Configuration
Key-Value Database Specific Configuration
When configuring databases for use with Quarkus and Eclipse JNoSQL, it’s important to note that instead of using the traditional Eclipse JNoSQL properties and configuration, Quarkus provides its properties and configuration for seamless integration. Below are sections detailing the configuration specifics for different NoSQL databases within the Quarkus environment.
The forthcoming sections will delve into the configuration details for ArangoDB, DynamoDB, Hazelcast, and Redis databases, providing comprehensive guidance for each. |
ArangoDB
Add the ArangoDB dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-keyvalue-arangodb</artifactId>
</dependency>
For specific configuration details, please refer to the ArangoDB JNoSQL driver.
DynamoDB
Add the DynamoDB dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-keyvalue-dynamodb</artifactId>
</dependency>
Please refer to the DynamoDB Quarkiverse extension for specific configuration details.
Hazelcast
Add the Hazelcast dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-keyvalue-hazelcast</artifactId>
</dependency>
Please refer to the Quarkus Hazelcast extension for specific configuration details.
Redis
Add the Redis dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-keyvalue-redis</artifactId>
</dependency>
For specific configuration details, please refer to the Redis Quarkus extension.
Document Database Configuration
Configuration
Configure the JNoSql Document Quarkus extension by specifying the database’s name in your application.properties
:
jnosql.document.database=my-database-name
Usage
Inject the DocumentTemplate
into your class and use it to interact with the Document database:
import jakarta.inject.Inject;
import org.jnosql.artemis.document.DocumentTemplate;
@Inject
private DocumentTemplate template;
public void insert(TestDocumentEntity entity) {
template.insert(entity);
}
Document Database Specific Configuration
When configuring databases for use with Quarkus and Eclipse JNoSQL, it’s important to note that instead of using the traditional Eclipse JNoSQL properties and configuration, Quarkus provides its properties and configuration for seamless integration. Below are sections detailing the configuration specifics for different NoSQL databases within the Quarkus environment.
The forthcoming sections will delve into the configuration details for ArangoDB, CouchDB, Elasticsearch, MongoDB, and Solr databases, providing comprehensive guidance for each. |
ArangoDB
Add the ArangoDB dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-document-arangodb</artifactId>
</dependency>
For specific configuration details, please refer to the ArangoDB JNoSQL driver.
CouchDB
Add the CouchDB dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-document-couchdb</artifactId>
</dependency>
For specific configuration details, please refer to the CouchDB JNoSQL driver.
Elasticsearch
Add the Elasticsearch dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-document-elasticsearch</artifactId>
</dependency>
For specific configuration details, please refer to the ElasticSearch driver.
MongoDB
Add the MongoDB dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-document-mongodb</artifactId>
</dependency>
For specific configuration details, please refer to the MongoDB configuration.
Solr
Add the Solr dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-document-solr</artifactId>
</dependency>
For specific configuration details, please refer to the Solr JNoSQL driver.
Column Database Configuration
Column Database Specific Configuration
Cassandra
Add the Cassandra dependency to your project’s pom.xml
:
<dependency>
<groupId>io.quarkiverse.jnosql</groupId>
<artifactId>quarkus-jnosql-column-cassandra</artifactId>
</dependency>
Please refer to the Cassandra Quarkus extension for specific configuration details.