【问题标题】:The various number of queries with Spring (Tomcat) and Java EE (JBoss)使用 Spring (Tomcat) 和 Java EE (JBoss) 进行的各种查询
【发布时间】:2012-08-14 04:14:07
【问题描述】:

我在 Tomcat 上使用 Spring 创建了一个应用程序,在 JBoss AS 7 上使用 Java EE (EJB + JSF) 创建了第二个应用程序。作为 ORM,我选择 Hibernate,或者我认为是这样。

假设,我有一个包含旅行优惠的页面。我可以单击链接以使用 AJAX 加载行程描述。

在 Spring 版本中,选择描述链接后,只会向数据库发送一个查询。这很好。

但是对于 Java EE 版本,在同样的情况下,发送了 7 个查询!当前站点上显示的每个行程报价的七个查询。所以,如果我能看到 4 个行程报价,那么就有 4*7 个 SQL 查询!这就是性能低的原因。

服务层(即 SQL 查询)在两个版本中是相同的。在 Spring 版本中,使用 jQuery 发送请求(通过邮寄)。在 Java EE 中,我使用 JSF AJAX 支持。

这种行为的原因是什么?我不确定,也许 Java EE 版本中并没有真正使用 Hibernate?在persistance.xml 我有以下内容:<provider>org.hibernate.ejb.HibernatePersistence</provider>.

【问题讨论】:

    标签: sql performance spring hibernate jakarta-ee


    【解决方案1】:

    首先你必须确定多个 SQL 查询是由客户端引起的,还是后端有什么不同。

    尝试打开 Firebug 或类似工具并检查您的浏览器是否正在发送一堆单独的 HTTP 请求。

    【讨论】:

    • 查询由客户端应用程序引发。我试图在 Firebug 中找到一些东西。在 Spring 中,浏览器发送一个带有参数 tourId 的帖子。在 JSF 帖子中看起来:j_idt30 j_idt30 javax.faces.ViewState 1890404398957610430:5258909192808903679 javax.faces.behavior.even... action javax.faces.partial.ajax true javax.faces.partial.event click javax.faces.partial.execu。 .. j_idt30:j_idt31:0:j_idt35 j_idt30:j_idt31:0:j_idt35 javax.faces.partial.rende... j_idt30:j_idt31:0:details javax.faces.source j_idt30:j_idt31:0:j_idt35
    • 读完这个题目问题解决了stackoverflow.com/questions/2090033/…getter中没有DB逻辑,问题解决了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多