我们正在将Java模板的持久层从JDBC模板重构为JPA / Hibernate.
我正在分析发给数据库的SQL语句,我看到很多次发出“SHOW WARNINGS”.据JProfiler称,“SHOW WARNINGS”占据了相当数量的“固有时间”.
什么可能导致SHOW WARNINGS频繁发布?
使用Jdbc模板时,以前未发布此SHOW WARNINGS.
下面是与持久性相关的堆栈部分.这里唯一的变化是引入了JPA / Hibernate.
> JPA / Hibernate:4.3.6
> MySQL驱动程序:5.1.33
> MySQL数据库:5.6.20
> JDBC连接池:HikariCP-2.3.2
编辑:这是发布SHOW WARNINGS时的示例堆栈跟踪.
com.mysql.jdbc.StatementImpl.getWarnings()
com.zaxxer.hikari.proxy.PreparedStatementJavassistProxy.getWarnings()
org.hibernate.jpa.internal.QueryImpl.getSingleResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.getSingleResult(javax.persistence.Query)
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult(com.mysema.query.types.Expression)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[ ])
com.sun.proxy.$Proxy115.findOne(com.mysema.query.types.Predicate)