Connect Your Payara Cloud Application to a Neon PostgreSQL Database
Originally published on 11 Mar 2024
Last updated on 11 Mar 2024

Deploying a web application often means connecting to a database. In this guide, I'll show you how to connect a Jakarta EE application on Payara Cloud to a PostgreSQL database hosted on Neon.
Prerequisites
- A Jakarta EE sample application (or your own project)
- A Neon account (the free tier will work)
- Your Neon database connection details
Get Started With Neon
1. Sample Application If you don't have one, create a Jakarta EE web application from the Payara Starter page (Web Profile).
2. Create a Neon Account Sign up for a free Neon account. This will provide a default project and database for our example.
3. Get Connection Details Find your database connection details in your Neon dashboard:
- Database server
- JDBC URL
- Database name
- Database user
- Database user password
Connect from Your Application
1. Define a Datasource Use the @DataSourceDefinition annotation and MicroProfile Config to set up your datasource:
@ApplicationScoped
@DataSourceDefinition(name = "java:app/cloud-postgres",
className = "org.postgresql.ds.PGSimpleDataSource",
url = "${MPCONFIG=DB_URL}",
databaseName = "${MPCONFIG=DB_NAME}",
serverName = "${MPCONFIG=DB_SERVER}",
user = "${MPCONFIG=DB_USER}",
password = "${MPCONFIG=DB_PASSWORD}",
properties = {"targetServerType=primary"})public class OpenAIFactory {
@Produces
@PersistenceContext
EntityManager entityManager;
}
2. Configure Persistence Update your persistence.xml to use the new datasource:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/persistence"
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
version="3.0">
<persistence-unit name="pcloud" transaction-type="JTA">
<jta-data-source>java:app/cloud-postgres</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
3. Add PostgreSQL Driver Include the PostgreSQL JDBC driver as a runtime dependency in your project.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.1</version>
<scope>runtime</scope>
</dependency>
Deploy to Payara Cloud
1. Create a Payara Cloud Account Sign up and create an application.
2. Set Environment Variables In Payara Cloud's Configuration, add MicroProfile Config properties matching what you defined in your code (DB_URL, DB_NAME, etc.) using your Neon connection details.
3. Deploy! Click "Deploy" under Revision Actions. Your app will be live and connected to your Neon database.
Troubleshooting Double-check your database connection settings if the deployment fails. Payara Cloud's logs will usually pinpoint the issue.
That's it! You've successfully connected your Payara Cloud application to a Neon PostgreSQL database. Get the full, detailed guide here for your offline use.
Related Posts
How to Build Cost-Effective Cloud Architectures
Published on 19 Aug 2025
by Chiara Civardi
0 Comments
Cloud adoption has transformed how developers build and scale applications, but it also brings new challenges in controlling costs. As cloud bills grow alongside usage, designing cost-efficient cloud architectures becomes essential for ...
Conquering Kubernetes Complexity: Why Java Developers Need More Than Just Containers
Published on 08 Aug 2025
by Chiara Civardi
0 Comments
Kubernetes, also known as K8s has become the de facto platform for orchestrating modern microservices architectures, promising resilience, scalability and faster deployment pipelines for Java applications. But for many developers, that promise ...