我正在通过EclipseLink使用JPA。在单元测试中,我想测试在一次操作中执行了多少个SQL查询。这样,如果以后的修改导致查询数量激增(例如,如果触发了延迟加载),则单元测试会将其标记为可能需要优化。
我在寻找正确的API来做到这一点。纯JPA解决方案将是理想的选择,但是我可以在单元测试中使用EclipseLink特定的API。我看了看EclipseLink分析器,但是它似乎没有给我一种计算SQL查询数量的方法。
在此先感谢您的帮助!
我没有找到用于这种验证的合适工具,而是创建了自己的工具。它被称为sniffy,可在MIT许可下使用。
您可以声明生成的查询数,如下所示:
// Integrate Sniffy to your test using @Rule annotation and a QueryCounter field
@Rule
public final QueryCounter queryCounter = new QueryCounter();
// Now just add @Expectation or @Expectations annotations to define number of queries allowed for given method
@Test
@Expectation(1)
public void testJUnitIntegration() throws SQLException {
// Just add sniffer: in front of your JDBC connection URL in order to enable sniffer
final Connection connection = DriverManager.getConnection("sniffer:jdbc:h2:mem:", "sa", "sa");
// Do not make any changes in your code - just add the @Rule QueryCounter and put annotations on your test method
connection.createStatement().execute("SELECT 1 FROM DUAL");
}
有关与JUnit集成的更多信息,请参见项目Wiki。
我正在对spark sql查询执行计划进行一些分析。explain()api打印的执行计划可读性不强。如果我们看到spark web UI,就会创建一个DAG图,该图分为作业、阶段和任务,可读性更高。是否有任何方法可以从执行计划或代码中的任何API创建该图?如果没有,是否有任何API可以从UI读取该grap?
问题内容: 我有一个带有库的IntelliJ项目:Hibernate-entitymanager 4.3.4和JPA 2.0-2.0。使用postgresql-9.3.1100.jdbc4连接到数据库。如何解决? jpa-ql>从ItemEntity中选择ItemEntity.name; 问题答案: 只需阅读文档: http://docs.oracle.com/javaee/7/api/javax
问题内容: 我不得不求助于ORM不足的原始SQL(使用Django 1.7)。问题在于大多数查询最终都具有80-90%的相似性。在不违反可重用性的前提下,我无法找到一种可靠且可靠的方式来构建查询。 字符串连接是唯一的出路,即使用条件构建无参数查询字符串,然后使用准备好的语句安全地包含参数(以避免SQL注入)。我想采用一种简单的方法来为我的项目模板SQL,而不是重新发明一个小型ORM。 例如,考虑以
问题内容: 我的查询在每次运行时都会收到超时错误。与连接的分页。 我想调试SQL,但是由于超时,所以看不到它。 在执行之前如何查看已编译的SQL查询? 一些蛋糕代码: 问题答案: 首先,将变量设置为2 in 。 然后加: 在布局的末尾。实际上,应该在默认的蛋糕布局中将其注释掉。 现在,您将能够看到所有转到数据库的SQL查询。 现在复制查询并在数据库上使用SQL EXPLAIN 命令(MySQL的链
问题内容: 我想知道如何检索由表适配器执行的SQL查询以进行记录。 例如: 输入: 输出: 我要记录的是insert语句,该语句由表适配器生成以执行insert命令。 我怎样才能做到这一点?有人对此有任何建议吗? 问题答案: 您可以使用此替代方法,并用其值替换ParameterName,但效果不好,因为您需要自己管理值格式,这可能很慢, 并且在执行Insert后需要获取参数。 代码:
问题内容: 我似乎找不到不使用来使用react- router更新查询参数的方法。似乎没有注册查询参数,而且似乎也不能将查询对象或任何内容作为第二个参数传递。 如何从更改URL ,以在反应路由器没有使用? 而且是一个真正的函数来监听查询变化的唯一途径?为什么没有自动检测到查询更改并对参数更改做出反应? 问题答案: 在中,您可以指定查询参数。例如, 要么 您可以查看此存储库以获取有关使用的其他示例