Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一次从数据库中获取所需的所有数据更好,还是更频繁地发出请求更好?_Java_Database_Web Applications_Aem - Fatal编程技术网

Java 一次从数据库中获取所需的所有数据更好,还是更频繁地发出请求更好?

Java 一次从数据库中获取所需的所有数据更好,还是更频繁地发出请求更好?,java,database,web-applications,aem,Java,Database,Web Applications,Aem,因此,我必须借助CQ5(基于OSGi、Sling、JCR内容存储库的Java CMS)开发一个web组件 此组件应执行以下操作: 从用户那里收集三个问题的答案,然后根据用户的答案,将数据库的响应提供给用户(可以说这是一个计算器) 第一个问题有5个答案变体,第二个有5个变体,第三个也有5个变体 但问题是,如果用户选择了选项1作为第一个问题的答案,那么第二个问题可能的答案数量就会减少,只剩下3个可能的答案 例如,用户有以下问题: 你来自哪个国家? 你来自哪个州? 你来自哪个城市 如果用户回答了加拿大

因此,我必须借助CQ5(基于OSGi、Sling、JCR内容存储库的Java CMS)开发一个web组件

此组件应执行以下操作: 从用户那里收集三个问题的答案,然后根据用户的答案,将数据库的响应提供给用户(可以说这是一个计算器)

第一个问题有5个答案变体,第二个有5个变体,第三个也有5个变体

但问题是,如果用户选择了选项1作为第一个问题的答案,那么第二个问题可能的答案数量就会减少,只剩下3个可能的答案

例如,用户有以下问题: 你来自哪个国家? 你来自哪个州? 你来自哪个城市

如果用户回答了加拿大的第一个问题,那么他将只能选择加拿大的州作为第二个问题的答案

因此,当用户更改表单时,表单中的数据应该通过ajax更新

所以,问题是:一次从数据库中获取所有数据(没有您看到的那么多)更好,还是在每个“表单更改事件”上向数据库发出请求更好?或者,这没什么区别

在我看来,从需要编写的代码量的角度来看,第二种变体更好,但从性能的角度来看,什么更好呢?

一如既往:“这取决于”。以州为例,如果仅限于北美洲,预加载所有州可能会很有用。一旦您的国家列表增加,并且随着国家数量的增加,最好只从基础数据存储中获取所需的状态
onChange

我也会根据客户数量做出选择

  • 用户可从中选择的可能性(世界上只有少数国家或所有~200个国家?)
  • 第二个选择框中的项目数量
  • 如果用户能够在第二个选择框中看到不匹配的项(如果这些项只在客户端删除,没有AJAX,只有纯JS,情况就是这样)
  • 要求的性能(可以用第二个延迟加载第二个框的可能性,还是要求接近即时?)
  • 评估这些点通常会给你一个很好的经验法则。对于3*5可能性的实际情况,从数据库中预加载所有可能性并在程序代码中进行过滤似乎是一个合理的选择。

    像往常一样:“视情况而定”。以州为例,如果仅限于北美洲,预加载所有州可能会很有用。一旦您的国家列表增加,并且随着国家数量的增加,最好只从基础数据存储中获取所需的状态
    onChange

    我也会根据客户数量做出选择

  • 用户可从中选择的可能性(世界上只有少数国家或所有~200个国家?)
  • 第二个选择框中的项目数量
  • 如果用户能够在第二个选择框中看到不匹配的项(如果这些项只在客户端删除,没有AJAX,只有纯JS,情况就是这样)
  • 要求的性能(可以用第二个延迟加载第二个框的可能性,还是要求接近即时?)

  • 评估这些点通常会给你一个很好的经验法则。对于3*5可能性的实际情况,从数据库中预加载所有可能性并在程序代码中进行过滤似乎是一个合理的选择。

    应避免过早优化。我会采用多个请求的方法。正如您所说,它将使应用程序更加干净。 然后,只有当它被证明太慢时,您才可以查看缓存或前端加载数据


    关于过早优化有很多争论-一般的意见是在你证明你需要它之前避免它

    应避免过早优化。我会采用多个请求的方法。正如您所说,它将使应用程序更加干净。 然后,只有当它被证明太慢时,您才可以查看缓存或前端加载数据

    关于过早优化有很多争论-一般的意见是在你证明你需要它之前避免它