Connect Quarkus (JDBC) to Neon
Learn how to connect to Neon from Quarkus using JDBC
Quarkus is a Java framework optimized for cloud environments. This guide shows how to connect to Neon from a Quarkus project using the PostgreSQL JDBC driver.
To connect to Neon from a Quarkus application using the Postgres JDBC Driver:
- Create a Neon Project
- Create a Quarkus project and add dependencies
- Configure a PostgreSQL data source
- Use the PostgreSQL JDBC Driver
- Run the application
Create a Neon project
If you do not have one already, create a Neon project.
- Navigate to the Projects page in the Neon Console.
- Click New Project.
- Specify your project settings and click Create Project.
Create a Quarkus project
Create a Quarkus project using the Quarkus CLI:
quarkus create app neon-with-quarkus-jdbc \
--name neon-with-quarkus-jdbc \
--package-name com.neon.tech \
--extensions jdbc-postgresql,quarkus-agroal,resteasy-reactive
You now have a Quarkus project in a folder named neon-with-quarkus-jdbc
with the PostgreSQL JDBC driver, Agroal datasource implementation, and RESTEasy Reactive extensions installed.
Configure a PostgreSQL data source
Create a .env
file in the root of your Quarkus project directory. Configure a JDBC data source using the components of your Neon database connection string and specifying the database kind as shown:
QUARKUS_DATASOURCE_DB_KIND=postgresql
QUARKUS_DATASOURCE_USERNAME=[user]
QUARKUS_DATASOURCE_PASSWORD=[password]
# Note that "jdbc" is prepended, and that "?sslmode=require" is appended to the connection string
QUARKUS_DATASOURCE_JDBC_URL=jdbc:postgresql://[neon_hostname]/[dbname]?sslmode=require
note
You can find the connection string for your database in the Connection Details widget on the Neon Dashboard. For more information, see Connect from any application.
Use the PostgreSQL JDBC Driver
Create a PostgresResource.java
file in the same directory as the GreetingResource.java
that was generated by Quarkus during project creation. Paste the following content into the PostgresResource.java
file:
package com.neon.tech;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/postgres")
public class PostgresResource {
@Inject
DataSource dataSource;
@GET
@Path("/version")
@Produces(MediaType.TEXT_PLAIN)
public String getVersion() {
try (Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement()) {
ResultSet resultSet = statement.executeQuery("SELECT version()");
if (resultSet.next()) {
return resultSet.getString(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
This code defines a HTTP endpoint that will query the database version and return it as a response to incoming requests.
Run the application
Start the application in development mode using the Quarkus CLI from the root of the project directory:
quarkus dev
Visit localhost:8080/postgres/version in your web browser. Your Neon database's Postgres version will be returned. For example:
PostgreSQL 15.4 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. Users on paid plans can open a support ticket from the console. For more details, see Getting Support.