Java执行SQL或调用存储的PROC来获取数据

时间:2016-09-14 22:11:17

标签: java oracle performance jdbc

SQL:

SELECT * FROM EMP;
STORED PROC : Returning CURSOR OF SELECT * FROM EMP

在java中,我使用以上两种从DB获取数据的方法。上述方法的结果有什么区别? 如果我的表包含数百万笔交易,那么最好的方法是什么? 我想知道oracle是否封装对象中的完整数据并将其发送给java?

我更有可能试图了解数据如何从oracle流向java。它是否像网络上的流一样发生,或者像请求/响应一样。

另一个问题,如果我想保留那些写入文件的百万个事务,你是否在oracle(同一台机器)中处理数据或者将数据提供给java并创建一个文件?哪个性能更好?

所以,您可能会理解,我的要求就像从DB获取数据并将其写入文件一样简单!但是我的表包含数以百万计的关于性能的交易。 我想用java来呈现数据(写入文件)和oracle来提取数据并发送到java。这样,我不会将我的SQL语句保存在java文件中。

1 个答案:

答案 0 :(得分:0)

通常,存储过程运行得更快,因为它们更接近数据库引擎和数据。

但你应该退后一步:我认为编写一个显示100万笔交易清单的应用程序是个不错的主意。无论是网页还是控制台应用,都是如此。

而是编写存储过程以将数据输出到文本文件。选择您真正需要的列而不是SELECT *

不言而喻,您应该注意数据安全性。如果它们是财务或其他敏感交易,您应该非常小心地将未加密的数据转储到可以轻松传递的文本文件中。

回到第一个问题,并假设您的响应最多可能是1000条记录,您可以执行存储过程或将查询放入Java代码中。如果将其放在Java代码中,请尽可能将数据库访问与表示代码和业务层隔离开来。

如果您的记录超过100条,您可能需要分页显示数据。

同样,在大多数情况下,现实问题/解决方案的性能差异不会那么大。您的整体设计和可用性可能会更重要。