微信服务号开发方案,关键词seo优化服务,网站建设学校培训班,dw网页制作图片Hibernate提供了开箱即用的SQL日志记录#xff0c;但是这种日志记录仅显示准备好的语句#xff0c;而不显示发送到数据库的实际SQL查询。 它还不会记录每个查询的执行时间#xff0c;这对于性能故障排除很有用。 这篇博客文章将介绍如何设置Hibernate查询日志记录#xff… Hibernate提供了开箱即用的SQL日志记录但是这种日志记录仅显示准备好的语句而不显示发送到数据库的实际SQL查询。 它还不会记录每个查询的执行时间这对于性能故障排除很有用。 这篇博客文章将介绍如何设置Hibernate查询日志记录然后将其与可以通过log4jdbc获得的日志记录进行比较。 Hibernate查询日志记录功能 Hibernate不会记录发送到数据库的实际SQL查询。 这是因为Hibernate通过JDBC驱动程序与数据库进行交互它向其发送准备好的语句但不发送实际的查询。 因此Hibernate只能记录准备好的语句及其绑定参数的值而不能记录实际的SQL查询本身。 这是由Hibernate登录时查询的外观 select /* load your.package.Employee */ this_.code, ...
from employee this_
where this_.employee_id?TRACE 12-04-201416:06:02 BasicBinder - binding parameter [1] as [NUMBER] - 1000 请参阅本文 为什么Hibernate在哪里以及在哪里进行此SQL查询 有关如何设置此类日志记录的信息。 使用log4jdbc 对于开发人员而言能够从日志中复制粘贴查询并能够直接在SQL客户端中执行查询非常有用但是变量占位符是? 使其不可行。 开源工具中的Log4jdbc可以做到这一点甚至更多。 Log4jdbc是一个间谍驱动程序它将自身包裹在真正的JDBC驱动程序中并记录查询过程中的查询。 与其他几个log4jdbc分支不同本文中链接的版本提供了Spring集成。 设置log4jdbc 首先在您的pom.xml中包含log4jdbc-remix库。 该库是原始log4jdbc的分支 dependencygroupIdorg.lazyluke/groupIdartifactIdlog4jdbc-remix/artifactIdversion0.2.7/version
/dependency 接下来在Spring配置中找到数据源的定义。 例如使用JNDI查找元素时数据源的外观如下 jee:jndi-lookup iddataSource jndi-namejava:comp/env/jdbc/some-db / 找到数据源定义后将其重命名为以下名称 jee:jndi-lookup iddataSourceSpied jndi-namejava:comp/env/jdbc/some-db / 然后定义一个新的log4jdbc数据源该数据源包装了真实的数据源并为其指定了原始名称 bean iddataSource classnet.sf.log4jdbc.Log4jdbcProxyDataSource constructor-arg refdataSourceSpied / property namelogFormatter bean classnet.sf.log4jdbc.tools.Log4JdbcCustomFormatter property nameloggingType valueSINGLE_LINE /property namemargin value19 / property namesqlPrefix valueSQL::: / /bean /property
/bean 使用此配置查询日志记录应该已经可以工作了。 可以自定义几个可用的log4jdbc记录器的记录级别。 log4jdbc原始文档提供了有关可用记录器的更多信息 jdbc.sqlonly 仅记录SQL jdbc.sqltiming 记录SQL执行后包括定时执行统计信息 jdbc.audit 记录除结果集外的所有JDBC调用 jdbc.resultset 记录对ResultSet对象的所有调用 jdbc.connection 记录连接打开和关闭事件 jdbc.audit记录器对于记录事务范围特别有用因为它记录了数据库事务的开始/提交/回滚事件。 这是建议的log4j配置将仅打印SQL查询及其执行时间 logger namejdbc.sqltiming additivity false level valueinfo / /logger logger namejdbc.resultset additivity false level valueerror / /logger logger namejdbc.audit additivity falselevel valueerror / /logger logger namejdbc.sqlonly additivity false level valueerror / /logger logger namejdbc.resultsettable additivity false level valueerror / /logger logger namejdbc.connection additivity false level valueerror / /logger logger namejdbc.resultsettable additivity false level valueerror / /logger结论 使用log4jdbc只是进行一些初始设置但是一旦安装到位便非常方便。 拥有真实的查询日志对于性能故障排除也很有用这将在以后的文章中进行介绍。 翻译自: https://www.javacodegeeks.com/2014/06/springhibernate-improved-sql-logging-with-log4jdbc.html