如何重新使用JDBC Connections?

时间:2016-04-20 18:45:00

标签: java sql database oracle tomcat

我试图从Oracle DB中显示一些数据。 它需要超过4秒才能获得连接。要读取整个数据,它只需要1-2秒。那么我怎样才能改善整体响应时间。

我试过这种方式

公共类ConnectionManager {

public static Connection getConnection() {

    Connection conn = null;
    try {

        OracleDataSource ods = new OracleDataSource();

        java.util.Properties prop = new java.util.Properties();
        prop.setProperty("MinLimit", "2");    
        prop.setProperty("MaxLimit", "10");    

        ods.setURL(DBProps.getProperty("oracle.url"));    

        ods.setConnectionCachingEnabled(true); 
        ods.setConnectionCacheProperties (prop);    
        ods.setConnectionCacheName("Cache");    

         conn = ods.getConnection(DBProps.getProperty("oracle.user"), DBProps.getProperty("oracle.password"));

    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
    }
}

并以传统方式尝试

public static Connection getConnection() {

    Connection conn = null;
    try {

        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection(DBProps.getProperty("oracle.url"), DBProps.getProperty("oracle.user"), DBProps.getProperty("oracle.password"));

    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
    }
    return conn;

}

2 个答案:

答案 0 :(得分:0)

如果您可以使用Java EE,例如Tom EE,我建议您使用JDBC连接池进行调查。

答案 1 :(得分:0)

如果要将代码部署到Web服务器或应用程序服务器,请尝试创建连接池并在不同的数据库调用之间重用它。

如果您运行的代码没有任何服务器容器,请尝试将您自己的Connection对象缓存为静态变量。

或者您甚至可以考虑使用弹簧框架工作,因为它可以在任何应用程序服务器上为您提供出色的事务管理