2011-02-07 78 views
4

我想通过在我们的mysql数据库中选择一个通用的EXPLAIN选择(...)来查看我们的数据库性能问题,但是我们的软件(使用JAVA编写)使用JPQL。我的观点是,所有的查询都使用对象,我想重现与JPA生成的查询完全一样的mysql查询(可以这样做吗?我的意思是,它必须在某个时刻转换为sql)。JPQL性能分析

任何人都可以解释我怎么可以将这个(JPQL)转换成一个SQL查询?甚至,如果有任何方法可以直接在JPA中执行,我可以为此任务创建一些UT。

我知道有一种方法可以在运行UT时直接在控制台中显示查询,也许我可以试着找出如何设置它,但我不确定它是否显示原生查询而不是JPQL查询。

只是为了清楚我的目标在这里:

  • 使用EXPLAIN 类似 指出的性能问题或 数据库。
  • 涉及的技术:JPA和MySql。

一些解决方案,我想到了(我想你们指出,如果他们是可行的):

  • 找出JPQL如何转换为SQL 并使用旧EXPLAIN 方法。
  • 了解如何使用直接在JPA EXPLAIN
  • 跟踪MySQL的日志或控制台(运行我的UT时):(

THX, 弗拉维奥。

+1

您正在使用哪种JPA实现? – Joel 2011-02-07 15:09:26

回答

3

记录不规范的JPA,因此启用日志记录功能取决于您的JPA提供程序,

for EclipseLink使用persistence.xml属性,

请参阅: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging

+1

这应该这样做,跟踪日志会给我我需要的查询! Thx @詹姆斯。 但是我仍然会打开它,看是否有人在JPQL中直接使用EXPLAIN。 – 2011-02-07 15:23:47