Java数据库实战:PostgreSQL与MongoDB

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么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", "安娜·斯米

博客

书籍推荐