Introduction : pourquoi un développeur Java doit-il connaître PostgreSQL et MongoDB ?
Le développement Java moderne ne se passe que rarement d'interaction avec les bases de données. Les deux systèmes les plus populaires — la base relationnelle PostgreSQL et la base orientée documents MongoDB — couvrent 90% des tâches des applications d'entreprise. PostgreSQL est idéal pour les schémas stricts et les systèmes transactionnels, tandis que MongoDB convient aux structures de données flexibles et aux fortes charges d'écriture.
Dans cet article, nous allons examiner des exemples pratiques de connexion aux deux bases de données depuis Java, effectuer des opérations CRUD de base et comparer les approches. Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant rafraîchir leurs connaissances.
1. PostgreSQL en Java : le classique des bases relationnelles
1.1. Connexion et configuration
Pour travailler avec PostgreSQL en Java, on utilise le pilote org.postgresql:postgresql. Ajoutez la dépendance dans pom.xml (Maven) :
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.1</version></dependency>La connexion via JDBC se présente ainsi :
String url = "jdbc:postgresql://localhost:5432/mydb";String user = "postgres";String password = "secret";
try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("Connexion à PostgreSQL établie !");} catch (SQLException e) { e.printStackTrace();}1.2. Opérations CRUD en pratique
Créons une table users et effectuons des opérations de base :
// Création de la tableString createSQL = """ CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) UNIQUE, age INTEGER )""";
try (Statement stmt = conn.createStatement()) { stmt.execute(createSQL); System.out.println("Table créée");}
// INSERTString insertSQL = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)";try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) { pstmt.setString(1, "Ivan Petrov"); pstmt.setString(2, "ivan@example.com"); pstmt.setInt(3, 30); pstmt.executeUpdate();}
// SELECTString selectSQL = "SELECT * FROM users WHERE age > ?";try (PreparedStatement pstmt = conn.prepareStatement(selectSQL)) { pstmt.setInt(1, 25); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { System.out.printf("ID : %d, Nom : %s, Email : %s%n", rs.getInt("id"), rs.getString("name"), rs.getString("email")); }}Important : Utilisez toujours PreparedStatement pour vous protéger des injections SQL.
2. MongoDB en Java : la flexibilité du modèle documentaire
2.1. Connexion via le pilote synchrone MongoDB
Ajoutez dans pom.xml :
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.11.1</version></dependency>Connexion à une instance MongoDB locale :
import com.mongodb.client.MongoClients;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoDatabase;
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");MongoDatabase database = mongoClient.getDatabase("mydb");System.out.println("Connexion à MongoDB établie");2.2. Opérations CRUD avec les documents
Travaillons avec la collection users :
import com.mongodb.client.MongoCollection;import org.bson.Document;import static com.mongodb.client.model.Filters.*;
MongoCollection<Document> collection = database.getCollection("users");
// CREATE — insertion d'un documentDocument user = new Document("name", "Anna Smith")