我在 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>
: