我一直在分析我的代码,试图了解瓶颈是什么,并且在运行数据库查询时遇到了一些相当奇怪的行为而我无法解释它:
设置场景:
class Edge {
int from;
int to;
}
class Foo {
... //50 attributes
}
class Bar {
... //50 attributes
}
class EdgeDAO extends JpaDaoSupport {
List<Edge> getEdgesFrom(int from) {
Map<String, Integer> params = new HashMap<>();
params.add("from", from);
return getJpaTemplate().findByNamedParams("from Edge where from=:from, params);
}
}
在进行性能分析时,我将DAO方法getEdgesFrom(int)
称为246次。
我无法解释的是,JProfiler在getEdgesFrom(int)
的246次调用中报告,Foo
和Bar
上的50个getter中的每一个被称为4,820,124次。 Foo
和Bar
甚至不在Edge
对象中。
任何人都可以帮助我理解为什么会这样吗?
答案 0 :(得分:2)
问题是FlushMode
设置为AUTO
。将此值更改为COMMIT
即可解决问题