從零搭建 Java Web 數據庫連接:工具鏈、驅動、連接池一站式指南
環境準備(2024 推薦棧)
- JDK: 下載 JDK 17/21 LTS(Oracle/OpenJDK/Temurin),無需單獨下載 Java EE,Servlet/JSP API 由構建工具引入。
- IDE: IntelliJ IDEA (Ultimate/Community) 或 Eclipse(安裝 Web Tools Platform)。
- 構建工具: Maven/Gradle 管理依賴,強烈不推薦 手動導 jar 包。
- 數據庫: 學習階段首選 MySQL 8.0(免費、文檔豐富、生態成熟),亦可用 PostgreSQL/H2(內存)。
Maven 依賴配置
<dependencies>
<!-- MySQL 驅動 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.3.0</version>
</dependency>
<!-- 連接池:HikariCP(Spring Boot 默認) -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
JDBC 連接池代碼模板
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8");
config.setUsername("root");
config.setPassword("123456");
config.setMaximumPoolSize(20);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
HikariDataSource ds = new HikariDataSource(config);
// 使用
try (Connection conn = ds.getConnection();
PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE id=?")) {
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
// ...
}
關鍵參數解析
| 參數 | 推薦值 | 說明 |
| useSSL | false | 本地開發關閉 SSL,減少握手開銷 |
| serverTimezone | UTC/Asia/Shanghai | 避免時區導致時間偏移 |
| characterEncoding | utf-8 | 統一字符集,防中文亂碼 |
| cachePrepStmts | true | 開啟 PreparedStatement 緩存,提升性能 |
進階:生產環境請配置 maximumPoolSize、connectionTimeout、idleTimeout、maxLifetime,並啟用 leakDetectionThreshold 排查連接洩漏。