J2EE开发中,特别是使用了Hibernate的项目,在开发阶段,有时候开发人员想看看程序执行的时候实际执行的SQL和动态SQL传入的参数情况,以调试和判断程序逻辑。本文总结下怎么实现,希望对你有用。~
hibernate打开SQL显示
这个比较简单,大多说人都知道,呵呵,配置如下:
hibernate.show_sql=true
hibernate.format_sql=false
使用log4jdbc
log4jdbc打印执行的SQL(包括参数)和输出数据(有点想MYSQL的CMD命令执行结果)
log4jdbc是在JDBC层切入,打印出实际执行的SQL语句和数据库返回数据,所以,就算不是使用Hibernate也可以使用,因为涉及数据库JDBC驱动的变更,建议在开发环境使用。
http://code.google.com/p/log4jdbc/
1.Maven 依赖(官方在googlecode,目前没有,按springside的文档,使用下面这个代替,测试了OK):
<dependency> <groupId>org.lazyluke</groupId> <artifactId>log4jdbc-remix</artifactId> <version>0.2.7</version> </dependency>
2.数据库连接配置修改为:
# 自使用驱动,但是请确保你url里面配置数据库对应的驱动是存在的。
jdbc.driver=net.sf.log4jdbc.DriverSpy
# 前端修改为jdbc:log4jdbc
jdbc.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:xe
3.log4j配置,按组件的需求进行输出
# log4jdbc
log4j.logger.jdbc.sqltiming=INFO
log4j.logger.jdbc.audit=OFF
log4j.logger.jdbc.resultset=OFF
log4j.logger.jdbc.sqlonly=INFO
结果如下:
17:27:07,488 INFO [jdbc.sqltiming] - <select contenttyp0_.id as id3_1_, contenttyp0_.name as name3_1_, contenttyp0_.parentid as parentid3_1_,
contenttyp0_.remrk as remrk3_1_, contenttyp1_.id as id3_0_, contenttyp1_.name as name3_0_,
contenttyp1_.parentid as parentid3_0_, contenttyp1_.remrk as remrk3_0_ from cms_content_type
contenttyp0_ left outer join cms_content_type contenttyp1_ on contenttyp0_.parentid=contenttyp1_.id
where contenttyp0_.id=110 {executed in 2 msec}>
17:27:07,489 INFO [jdbc.resultsettable] - <|---------|---------|-------------|----------|-------|---------|-------------|>
17:27:07,489 INFO [jdbc.resultsettable] - <|ID3_1_ |NAME3_1_ |PARENTID3_1_ |REMRK3_1_ |ID3_0_ |NAME3_0_ |PARENTID3_0_ |>
17:27:07,489 INFO [jdbc.resultsettable] - <|---------|---------|-------------|----------|-------|---------|-------------|>
17:27:07,490 INFO [jdbc.resultsettable] - <|[unread] |JAVA5 |103 |null |103 |[unread] |[unread] |>
17:27:07,490 INFO [jdbc.resultsettable] - <|---------|---------|-------------|----------|-------|---------|-------------|>
安逸~~
相关推荐
- 额外的库:如Spring整合库、缓存库(如Ehcache)、日志库(如Log4j)等,扩展了Hibernate的功能。 3. 主要组件解析: - Entity Manager:负责实体的生命周期管理,如持久化、检索、更新和删除。 - Session ...
8. **日志和调试**:Hibernate使用了SLF4J(Simple Logging Facade for Java)作为日志接口,开发者可以根据需要选择不同的日志实现,如Log4j或Java Util Logging。此外,它还提供了详细的调试信息,帮助开发者追踪...
Log4jdbc Spring Boot Starter Log4jdbc Spring Boot Starter有助于在Spring Boot项目中快速方便地使用 。 Log4jdbc特别方便,因为它可以记录准备运行... < artifactId>log4jdbc-spring-boot-starter</ artifactId>
5. 其他依赖:如javassist、slf4j、log4j等,用于动态字节码生成和日志记录。 配置Hibernate主要涉及以下几个方面: - 配置文件:通常为`hibernate.cfg.xml`,定义数据库连接信息、实体类扫描路径、缓存策略等。 -...
3. 数据库连接池:`hibernate-c3p0.jar` 或 `hibernate-jdbc-logging.jar`等 Hibernate需要一个数据库连接池来高效管理数据库连接。C3P0是一个常用的连接池实现,`hibernate-c3p0.jar`提供了对它的支持。而`...
5. **其他依赖**:Hibernate 还依赖于其他库,如 cglib 和 javassist 用于动态代理,dom4j 或 jaxb 用于 XML 处理,slf4j 或 log4j 用于日志记录等。这些库通常需要根据项目需求一起引入。 **使用 Hibernate 进行...
最后,`log4j1.2.16`是Apache的一个经典日志框架,广泛应用于Java应用中。它提供了丰富的日志级别(如DEBUG、INFO、WARN、ERROR和FATAL),以及自定义日志格式和输出目标(如控制台、文件、数据库等)的能力。通过...
ORM框架如Hibernate、MyBatis等,简化了Java应用与数据库之间的交互,但同时也隐藏了SQL语句的具体细节。在某些情况下,我们需要查看这些SQL语句,以便于调试、性能优化或者排查问题。 首先,让我们理解ORM框架的...
hibernate.format_sql 参数用于在 log 和 console 中打印出更漂亮的 SQL。其取值为 true 或 false。当设置为 true 时,Hibernate 将格式化 SQL 语句,提高可读性和调试效率。 4. hibernate.default_schema ...
6. **slf4j-api.jar**和相应的实现库(如logback-classic.jar或log4j.jar):简单日志门面(SLF4J)为各种日志框架提供一个抽象层,允许最终用户在部署时插入所需的日志实现。 7. **jboss-logging.jar**:JBoss的...
Spring、Hibernate和Log4j是Java开发中三个非常重要的库,它们各自负责不同的领域,而将它们结合在一起,可以构建出强大的企业级应用系统。 Spring是一个全面的后端应用程序框架,它提供了依赖注入(DI)和面向切面...
日志配置文件(log4j.properties)是用来控制日志输出的,这里设置了日志级别为WARN,并将日志输出到控制台。 实体类(User.java)是数据库表的映射对象,包含字段id、name和birthday。id字段使用了"native"生成...
6. **日志库**:Hibernate内置了对SLF4J和Log4j的支持,允许开发者选择合适的日志框架记录应用运行过程中的信息,便于调试和问题排查。 7. **其他库**:还包括对JAXB、DOM4J等XML处理库的依赖,用于处理XML配置文件...
通常,Hibernate会使用Log4j、SLF4J或者Java Util Logging等日志框架。这些日志库可以帮助开发者记录和调试应用的运行情况,对于定位问题和优化性能有着重要作用。 三、MySQL连接库 在此次发布的版本中,还包含了...
spring-expression-3.0.7.RELEASE.jar,spring-hibernate3.jar,spring-jms-3.0.7.RELEASE.jar,spring-tx-3.0.7.RELEASE.jar,spring-web-3.0.7.RELEASE.jar,sqljdbc4.jar,stax2-api-3.1.1.jar,velocity-1.7.jar,WHICH_...
- **sqljdbc4.jar**:Microsoft SQL Server JDBC驱动程序,用于连接SQL Server数据库。 综上所述,这些JAR包构成了Struts2+Spring2+Hibernate3+Annotation开发所需的基本环境。通过合理配置这些库,开发者可以构建...
为了显示查询SQL,MyBatis 提供了日志配置,通常可以启用Log4j或SLF4J,并配置相应的日志级别来打印SQL语句。 **iBatis** iBatis 是MyBatis的前身,两者在概念上相似,但MyBatis在iBatis的基础上进行了改进和扩展。...
综合上述技术,这个项目可能是一个使用SpringBoot作为基础框架,通过Spring Data JPA进行数据库操作,使用FreeMarker作为模板引擎展示页面,Shiro负责安全控制,而Log4jdbc则用于记录数据库查询日志的Web应用。...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...