1. 概述

Oracle数据库是业界最流行的关系型数据库之一。本文将介绍如何通过JDBC驱动连接Oracle数据库,涵盖环境准备、依赖配置和连接实现等关键步骤。

2. 数据库准备

首先需要准备Oracle数据库环境。如果没有现成环境,可通过以下两种方式获取:

官方下载
Oracle Database Software Downloads获取免费版本

Docker方案
使用Oracle Database Container Images中的镜像

本文以*Oracle Database 23ai (23.5.0)*的Docker镜像为例进行演示。

3. Maven依赖配置

在项目中添加Oracle JDBC驱动依赖。针对Oracle 23ai数据库,推荐使用ojdbc11驱动:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc11</artifactId>
    <version>23.5.0.24.07</version>
</dependency>

⚠️ 版本说明

4. 数据库连接实现

推荐使用OracleDataSource(Oracle对DataSource接口的实现)而非DriverManager,原因如下:

  • 更好的可扩展性
  • 更便捷的配置方式

4.1 连接方法实现

public static Connection getConnection(String databaseUrl, String userName, String password) throws SQLException {
    var connectionProperties = new Properties();
    connectionProperties.setProperty(OracleConnection.CONNECTION_PROPERTY_USER_NAME, userName);
    connectionProperties.setProperty(OracleConnection.CONNECTION_PROPERTY_PASSWORD, password);

    var oracleDataSource = new OracleDataSource();
    oracleDataSource.setConnectionProperties(connectionProperties);
    oracleDataSource.setURL(databaseUrl);

    return oracleDataSource.getConnection();
}

💡 替代方案
也可使用setUser()setPassword()方法替代setConnectionProperties(),但后者能更方便地配置其他属性(如自动提交、缓存、抓取大小等)。

4.2 连接测试

@Test
void whenConnectionRetrieved_thenUserNameIsReturned() throws SQLException {
    var url = "jdbc:oracle:thin:@//localhost:1521/FREEPDB1";
    var userName = "BAELDUNG";
    var password = "baeldung_pw";

    String retrievedUser = null;
    try (var connection = ConnectToOracleDb.getConnection(url, userName, password)) {
        retrievedUser = connection.getMetaData().getUserName();
    }

    assertEquals(userName, retrievedUser);
}

最佳实践
使用try-with-resources语句自动管理连接关闭,避免资源泄漏。

常见错误

  • ORA-17868:主机名错误
  • ORA-01017:用户名/密码错误

5. 性能优化:连接池

在生产环境中,特别是Web应用,强烈建议使用连接池优化性能:

🔧 连接池优势

  • 复用数据库连接
  • 减少连接创建开销
  • 提升系统吞吐量

📦 Oracle官方方案
Universal Connection Pool (ucp11)支持Java 8/11+

🔌 第三方选择

  • HikariCP(高性能首选)
  • Tomcat JDBC Pool
  • Apache Commons DBCP2

6. 总结

通过本文我们了解到:

  1. Oracle JDBC连接配置简单直接
  2. OracleDataSource是推荐的连接方式
  3. 生产环境必须使用连接池
  4. 错误处理需关注ORA系列错误码

掌握这些要点后,即可在Java应用中高效集成Oracle数据库。


原始标题:Connect to Oracle Database with JDBC Driver | Baeldung