查看条件:数据库vs内存vs两者

时间:2019-03-21 15:28:53

标签: oracle oracle-adf jdeveloper

我想知道是否有人知道在ADF中使用查询执行模式的最佳实践是什么?据我了解:

数据库:每次命中查询时,都会从数据库表中过滤搜索结果。 内存中:从VO高速缓存中过滤结果。它将使用行集中已存在的行。它将停止对数据库的不必要的攻击。 两者:从现有的行集中过滤结果,也从数据库中过滤结果。当您还想从未提交的记录中进行过滤时,这很有用。

我问的原因是因为我在使用Both选项时遇到了一些问题。我的绑定变量没有正确更新。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

根据我的经验,除非需要过滤新创建但尚未提交的行,否则应该始终使用数据库。

这是数据库vs内存vs两者

之间的不同用例

数据库模式允许查询数据库表,并确保为用户提供的数据是最新的。如果您只是创建了新行而没有将其提交到数据库,则在数据库模式下将视图条件应用于视图对象将不会显示该新行。这是默认模式。

内存模式允许查询视图对象缓存数据。因此,执行查询将显示您新创建但未提交的行,但不会显示数据库中任何新创建的行。

两种模式允许显示您新创建但未提交的行,并显示数据库中任何新创建的行。但是由于某种原因,它通常很慢。

您可以在此处阅读更多信息(https://docs.oracle.com/middleware/12213/adf/develop/working-programmatically-view-objects.htm#ADFFD1223

  

默认情况下,视图对象针对数据库执行其查询以   检索其结果行集中的行。但是,您也可以使用   查看对象以执行内存中搜索和排序以避免   不必要的数据库访问。这种操作非常适合   对视图对象的新行(尚未发布)进行排序和过滤   行集否则,未发布的行将添加到行集的顶部。