Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 在同时执行的Spring控制器中,两种方法只有一个数据获取的最佳方法_Java_Spring_Hibernate_Spring Mvc_Architecture - Fatal编程技术网

Java 在同时执行的Spring控制器中,两种方法只有一个数据获取的最佳方法

Java 在同时执行的Spring控制器中,两种方法只有一个数据获取的最佳方法,java,spring,hibernate,spring-mvc,architecture,Java,Spring,Hibernate,Spring Mvc,Architecture,在Spring MVC中,我有两种方法: public ModelAndView getLegislations(HttpServletRequest request,HttpServletResponse response) { List list = getLegistService().fetchLislation(); // returns model and view object } public ModelAndView getLegislationsJSON(

在Spring MVC中,我有两种方法:

public ModelAndView getLegislations(HttpServletRequest  
request,HttpServletResponse response)  { 
List list = getLegistService().fetchLislation();     
// returns model and view object
}

public ModelAndView getLegislationsJSON(HttpServletRequest request,  
HttpServletResponse response) throws Exception {
List list = getLegistService().fetchLislation()
// returns JSON Object
}
使用jqueryajax同时执行这两种方法。 一个返回modelandview对象,另一个返回JSON

对于这两种方法,只有一个数据获取的最佳方式是什么。我之所以需要它,是因为
getLegistService().fetchLisation()
提供的结果是相同的。
谢谢

使用服务后面的缓存-查询缓存。例如,在EclipseLink中,您有“查询结果缓存”。在Hibernate[1]中,必须将以下内容添加到persistence.xml中:

<property name="hibernate.cache.use_query_cache" value="true"/>

但您也可以使用guava缓存或其他东西实现自己的缓存。然后,您的服务将获取发送到缓存,而不是直接询问DB[2]

[1]
[2]

根据您的服务方法,我看不到传递任何参数,因此它是一种常量数据,使用web服务器范围进行缓存就足够了

  • 如果后端的数据没有增长,那么可以将
    列出应用程序范围中的对象,因此请尝试从
    如果应用程序sope不存在,则点击数据库,获取数据并将其放入数据库
    在应用程序范围中,然后返回此缓存
    数据
  • 如果数据在增长,那么考虑变量是什么,使用会话 范围和遵循与上述相同的状态
正如Vishnu和Swinkler所提到的,缓存可以是一种选择,但如果您只想从客户端拨打一个电话,并且两个电话都在一起(我从您的问题中了解到),您可以使用设计模式拨打电话,并使相同的ModelAndView对象对两个订户都可用。一旦有了对象,您就可以将其转换为JSON客户端。

您可以添加控制器注释吗?你有一个或两个要求吗?请提供您提出的请求。我使用的是Spring 2,而不是注释,这两种方法都是在Multiaction controller中使用的。两种方法分别使用两种不同的Ajax请求。您可以添加一个缓存,这样多个抓取就不重要了。Jquery或Hibernate中的缓存是否可以仅使用一种方法并基于接受的内容类型,转换为json或模型和视图?这似乎是不必要的代码重复,除非您有其他原因。顺便问一下,这种方法有什么问题?你是根据要求取的。即使是一次数据获取,场景也与请求数加倍时的场景相同,对吗?看,我有一个网页,一边是图形,另一边是表单,图形需要JSON格式。两个都在页面加载时调用此服务器?在这种场景中我们如何实现观察者模式?