首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Java 傳統 JDBC 連接 Oracle 資料庫範例與效能隱憂

     編輯:Oracle 資料庫基礎

前言

所謂「傳統方式」指每次操作都建立新的 Connection、PreparedStatement,用完即關閉。雖然寫法直觀,但在高併發下頻繁建立實體連線會嚴重拖垮效能。本文示範基本寫法並說明為何生產環境應改用連線池。

基本範例:新增一筆資料

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class JdbcTraditionalDemo {
    public static void main(String[] args) {
        String driver = "oracle.jdbc.driver.OracleDriver";
        String url    = "jdbc:oracle:thin:@192.168.1.3:1521:ora92";
        String user   = "scott";
        String pwd    = "tiger";
        String sql    = "INSERT INTO users(username, password) VALUES (?, ?)";

        try {
            Class.forName(driver);                    // 1. 載入驅動
            Connection conn = DriverManager.getConnection(url, user, pwd); // 2. 建立連線
            PreparedStatement ps = conn.prepareStatement(sql);              // 3. 預編譯
            ps.setString(1, "張三");
            ps.setString(2, "lisi");
            ps.executeUpdate();                                        // 4. 執行
            ps.close();
            conn.close();                                              // 5. 釋放資源
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

效能問題分析

  • 建立連線昂貴:TCP 三向交握、驗證、Session 建立需數十至數百毫秒。
  • 無法重用:每次請求都重複上述動作,資料庫進程/執行緒暴增。
  • 資源洩漏風險:若例外發生在 close() 前,連線無法歸還。

改進方向

  1. 使用 JDBC 連線池 (DBCP, HikariCP, Tomcat Pool) —— 參見 下一篇。
  2. 搭配 try-with-resources (Java 7+) 自動關閉資源。
  3. 啟用 PreparedStatement 快取(驅動層面)。
本範例僅供教學理解 JDBC 基礎流程,實務專案請務必採用連線池。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved