java - Oracle 连接池类

标签 java oracle jdbc connection-pooling

我想在 Helper 类中为 Oracle DB 设置连接池。

public class DbConnection {

// Data source for the pooled connection
private static OracleDataSource dataSource;

// Host
private static final String dbHost = "bla";

// Port
private static final String dbPort = "1521";

// DBname
private static final String database = "orcl";

// DBuser
private static final String dbUser = "bla";

// DBpassword
private static final String dbPassword = "bla";

static {
    OracleConnectionPoolDataSource opds;
    try {
        opds = new OracleConnectionPoolDataSource();
        opds.setURL("jdbc:oracle:thin:@" + dbHost + ":" + dbPort + ":"
                + database);
        opds.setUser(dbUser);
        opds.setPassword(dbPassword);
        dataSource = opds;
    } catch (SQLException e1) {
        System.err.println("Connection failed!");
    }
    try {
        // Load driver
        Class.forName("oracle.jdbc.driver.OracleDriver");

    } catch (ClassNotFoundException e) {
        System.out.println("Driver not found!");
    }
}

public static Connection getConnection() throws SQLException {
    return dataSource.getConnection();
}
}

这是有效的,但速度不是很快,所以我想我错过了一些让池工作的东西。有什么建议吗?

所以我的外部类只调用 getConnection() 方法...

Connection conn = DbConnection.getConnection();
...
conn.close();

最佳答案

您不应直接使用ConnectionPoolDataSource。它旨在供应用程序服务器中的连接池使用。它本身不提供连接池。另请参阅https://stackoverflow.com/a/12651163/466862

换句话说:您需要使用实际的连接池,例如 DBCP、c3p0 或 BoneCP,或者 UCP(通用连接池)。

关于java - Oracle 连接池类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660724/

相关文章:

Java 删除字符串中的空格

java - 无法在 Java 中对我的图像使用鱼眼镜头效果

java - 如何在Java中更新Sqlite中的ResultSet

java - 在Java中执行多重查询时出错

Java8 Streams - 如何将内部映射的键值从 "null"字符串修改为空对象

java - 给定特定枚举类型的数值,如何检索名称?

java - Oracle 连接压缩?

sql - Oracle - 将列数据映射到一个值

Oracle 原子存储过程

java - Spring 的存储过程 - 从过程返回的结果总是空的