在Hibernate的配置文件hibernate.cfg.xml中有3个设置项跟显示SQL语句相关,他们的值都是boolean值:
(1)、show_sql:是否显示SQL语句
(2)、format_sql: 是否格式化输出字符串,增强SQL的可读性
(3)、use_sql_comments:是否显示注释,用于指示出是什么操作产生了这个SQL语句。
在默认情况下,Hibernate会把SQL语句打印在Console上,因此在开启了上面的设置之后,可以在控制台上看到如下结构的SQL语句:
Console代码:
01 /* load collection cc.unmi.test.model.Post.securities */ select
02 securities0_.post_id as post1_7_1_,
03 security1_.shareclassid as sharecla1_16_0_,
04 security1_.company_id as company2_16_0_,
05 from
06 Post_Security_Relationship securities0_
07 inner join
08 unmi.securities security1_
09 on securities0_.shareclassid=security1_.shareclassid
10 where
11 securities0_.post_id=?
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
log4j. logger.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE
这样修改之后,打印的SQL语句会变为如下形式:
Console代码:
01 20:13:40.710 [http-8080-1] DEBUG org.hibernate.SQL -
02 /* load collection cc.unmi.test.model.Post.categories */ select
03 categories0_.post_id as post1_7_1_,
04 elementite1_.id as id3_0_,
05 from
06 Post_Category_Relationship categories0_
07 inner join
08 unmi.element_item elementite1_
09 on categories0_.category_id=elementite1_.id
10 where
11 categories0_.post_id=?
12 20:13:40.710 [http-8080-1] TRACE org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [1] as [INTEGER] - 10
13 20:13:40.710 [http-8080-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor - found [1002] as column [id3_0_]
14 20:13:40.710 [http-8080-1] TRACE org.hibernate.type.descriptor.sql.BasicExtractor - found [10] as column [post1_7_1_]
log4j.logger.org.hibernate.engine.QueryParameters=DEBUG
log4j.logger.org.hibernate.engine.query.HQLQueryPlan=DEBUG
这样修改之后,可以得到如下的结果:
Console代码:
01 20:13:40.710 [http-8080-1] org.hibernate.engine.query.HQLQueryPlan - find: from User where email = :email
02 20:13:40.710 [http-8080-1] org.hibernate.engine.QueryParameters - named parameters: {email=fantasia@sina.com}
03 20:13:40.726 [http-8080-1] org.hibernate.SQL -
04 /* named HQL query findUserByEmail */ select
05 user0_.id as id0_,
06 user0_.email as email0_,
07 user0_.enabled as enabled0_,
08 user0_.encodedPassword as encodedP8_0_
09 from
10 User user0_
11 where
12 user0_.email=?++++++++++++++++++++++++++++++++++++++++++++++++++++++1、hibernate配置文件中:
show_sql=true
2、log4j.properties 文件中添加:
log4j.logger.org.hibernate.SQL=trace
log4j.logger.org.hibernate.type=trace
本文介绍了Hibernate配置中与显示SQL语句相关的设置,包括show_sql、format_sql和use_sql_comments。开启这些设置后,Hibernate将在控制台以格式化的方式打印SQL语句,并附带操作注释,提高SQL的可读性。
5103

被折叠的 条评论
为什么被折叠?



