引言:为什么Java开发者需要掌握PostgreSQL和MongoDB?
现代Java开发几乎离不开数据库交互。两大最流行的系统——关系型PostgreSQL和文档型MongoDB——覆盖了企业级应用90%的需求。PostgreSQL非常适合严格模式的事务型系统,而MongoDB则适用于灵活的数据结构和高写入负载场景。
本文将讲解从Java连接这两种数据库的实战示例,执行基本的CRUD操作,并对比两种方法。无论你是新手还是希望巩固知识的资深开发者,本文都将有所帮助。
1. Java中的PostgreSQL:关系型数据库的经典
1.1. 连接与配置
在Java中操作PostgreSQL需要使用驱动org.postgresql:postgresql。在pom.xml(Maven)中添加依赖:
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.1</version></dependency>通过JDBC连接如下:
String url = "jdbc:postgresql://localhost:5432/mydb";String user = "postgres";String password = "secret";
try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("PostgreSQL连接已建立!");} catch (SQLException e) { e.printStackTrace();}1.2. CRUD操作实战
创建users表并执行基本操作:
// 创建表String 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("表已创建");}
// INSERTString insertSQL = "INSERT INTO users (name, email, age) VALUES (?, ?, ?)";try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) { pstmt.setString(1, "伊万·彼得罗夫"); 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, Name: %s, Email: %s%n", rs.getInt("id"), rs.getString("name"), rs.getString("email")); }}重要提示:始终使用PreparedStatement以防止SQL注入攻击。
2. Java中的MongoDB:文档模型的灵活性
2.1. 通过MongoDB同步驱动连接
在pom.xml中添加:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.11.1</version></dependency>连接到本地MongoDB:
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("MongoDB连接已建立");2.2. 文档的CRUD操作
操作users集合:
import com.mongodb.client.MongoCollection;import org.bson.Document;import static com.mongodb.client.model.Filters.*;
MongoCollection<Document> collection = database.getCollection("users");
// CREATE — 插入文档Document user = new Document("name", "安娜·斯米