Terug naar overzicht
Techblogs

Hoe connect je PostgreSQL met een Java-toepassing?

PostgreSQL is een krachtige, open-source SQL-database met een object-relationele structuur en veel verschillende robuuste functies die betrouwbare en uitstekende prestaties garanderen. In deze techblog zullen we uitleggen hoe je een PostgreSQL-database connect met een Java-toepassing die wordt gehost op het Previder PaaS+-platform.
Door: Peter Bult
PaaS+

PostgreSQL met een Java-toepassing connecten

1. Meld je aan bij PaaS+, ga naar het dashboard en maak een nieuwe omgeving aan met de Java-toepassingsserver en de PostgreSQL-database.

Java application and PostgreSQL database

2. Na het aanmaken van de omgeving ontvang je een e-mail met de toegangsgegevens voor je database (host, gebruikersnaam en wachtwoord).

PostgreSQL node aangemaakt

3. Klik op de "Config" knop naast je toepassingsserver (Tomcat in ons geval) om toegang te krijgen tot de configuratiebestandsbeheerder en maak een nieuw bestand met de naam "mydb.cfg" aan in de map "/opt/tomcat/temp".

java postgres config knop

4. Voeg de volgende verbindingsgegevens toe aan het bestand mydb.cfg:

host=jdbc:postgresql://{host}/{db_name}
username={user}
password={password}
driver=org.postgresql.Driver

mydbcfg PaaS+

Hier zijn de vervangbare waarden:

{host} - link naar je DB-node zonder het protocolgedeelte
{db_name} - naam van de database (postgres in ons geval)
{user} en {password} - referenties van de beheerder-gebruiker

Let op: In de regel wordt voor productieomgevingen aanbevolen om een nieuwe beperkte gebruiker te definiëren via phpPgAdmin voor je toepassing, met toegang tot alleen de specifieke database. Voor dit voorbeeld zullen we echter de standaardgebruiker (webadmin met volledige beheerstoegang tot de server) en de database (postgres) gebruiken.

5. Hieronder de code van de applicatie die we in deze techblog gebruiken:

package connection;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DbManager {
public String date = new SimpleDateFormat("dd-MM-yyyy-HH-mm").format(new Date());
private final String createTable = "CREATE TABLE \"" + date + "\" (id INT, data VARCHAR(100));";
private static final int LoginTimeout = 10;
public DbManager() {
}
public Connection createConnection() throws IOException, ClassNotFoundException, SQLException {
Properties prop = new Properties();
System.out.println("\n\n=======================\nJDBC Connector Test " + date);
System.out.println("User home directory: " + System.getProperty("user.home"));
String host;
String username;
String password;
String driver;
try {
prop.load(new java.io.FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));
host = prop.getProperty("host").toString();
username = prop.getProperty("username").toString();
password = prop.getProperty("password").toString();
driver = prop.getProperty("driver").toString();
} catch (IOException e) {
System.out.println("Unable to find mydb.cfg in " + System.getProperty("user.home") + "\n Please make sure that configuration file created in this folder.");
host = "Unknown HOST";
username = "Unknown USER";
password = "Unknown PASSWORD";
driver = "Unknown DRIVER";
}
System.out.println("host: " + host + "\nusername: " + username + "\npassword: " + password + "\ndriver: " + driver);
Class.forName(driver);
System.out.println("--------------------------");
System.out.println("DRIVER: " + driver);
System.out.println("Set Login Timeout: " + LoginTimeout);
DriverManager.setLoginTimeout(LoginTimeout);
Connection connection = DriverManager.getConnection(host, username, password);
System.out.println("CONNECTION: " + connection);
return connection;
}
public String runSqlStatement() {
String result = "";
try {
Statement statement = createConnection().createStatement();
System.out.println("SQL query: " + createTable);
statement.execute(createTable);
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Exception occurred: " + ex);
result = ex.getMessage();
} catch (SQLException ex) {
ex.printStackTrace();
result = ex.getMessage();
}
return result;
}
}

6. Rol ons voorbeeldprogramma uit op je Tomcat-server. Vanwege de verschillende versies van servlet-specificaties die worden ondersteund door Tomcat 9 en Tomcat 10, hebben we de respectieve toepassingen voorbereid:

Tomcat 9: https://download.jelastic.com/public.php?service=files&t=18753849900d2461b3162bd4355f834d&download

Tomcat 10: https://download.jelastic.com/public.php?service=files&t=503e9768ee573fd452cec8a34a2215b2&download

deploy from url tomcat

Let op: Onze voorbeeldtoepassing bevat al de jdbc-connector voor toegang tot de PostgreSQL-database. Voor andere projecten moet je deze mogelijk handmatig uploaden naar de map webapps/{app_context}/WEB-INF/lib op je toepassingsserver (vergeet niet de server opnieuw op te starten om de wijzigingen toe te passen).

7. Na het uitrollen van het voorbeeldprogramma klik je op Open in Browser naast je applicatieserver.

open in browser

8. Klik op ''open in browser'' en vervolgens op ''Create test table in your database''.

jdbc test application

Je verzoek wordt verwerkt. Er komt vanzelf een voltooid bericht in beeld.

db created

9. Ga de database in via phpPgAdmin om te controleren of er een nieuwe tabel is aangemaakt (de toegangsgevens worden verstrekt via de e-mail die wordt beschreven in de tweede stap van deze handleiding).

phppgadmin

Zoals je kunt zien is er succesvol een nieuwe tabel aangemaakt en toegevoegd aan onze Java-toepassing (vernoemd naar de datum en tijd van het aanmaken). De verbinding is succesvol aangemaakt!

Probeer Previder PaaS+ 30 dagen gratis! Maak direct jouw PaaS 30 dagen free trial account aan.

Maak direct je account aan en probeer Previder PaaS+ 30 dagen gratis!

  • Ongelimiteerd aantal gebruikers
  • Geen creditcard vereist
  • 30 dagen volledige functionaliteit
  • Binnen 1 minuut aan de slag

Maak gratis account aan

Meer weten over ons PaaS+ platform?

Neem contact op met jouw accountmanager of neem contact op via onze contactpagina.

Lees hier alles over: