2016-04-20 136 views
0

我试图从Oracle数据库显示一些数据。 它需要4秒以上的时间才能获得连接。要读取整个数据,只需要1-2秒。因此,如何提高整体响应时间。如何重新使用JDBC连接?

我试图以这种方式

公共类的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; 

} 
+0

你使用像Hibernate的ORM的? –

+0

No.Simple JDBC Connection –

+0

另请参阅:[高性能Oracle JDBC编程](http://www.oracle.com/technetwork/articles/vasiliev-oracle-jdbc-090470.html)了解Oracle的UCP(Universal连接池)。 – MT0

回答

0

如果你可以使用Java EE如汤姆EE我建议尝试调查使用JDBC连接池。

0

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

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

或者你甚至可以考虑使用弹性框架的工作,因为它会给你带来很大的事务管理与任何应用服务器