Hibernate具有内置功能,可将所有生成的SQL语句记录到控制台。 您可以通过在Hibernate配置文件“ hibernate.cfg.xml
”中添加“ show_sql ”属性来启用它。 该功能对于基本的故障排除很有用,并可以了解Hibernate在做什么。
1. show_sql
启用将所有生成的SQL语句记录到控制台
<!--hibernate.cfg.xml -->
<property name="show_sql">true</property>
输出量
Hibernate: insert into mkyong.stock_transaction
(CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values (?, ?, ?, ?, ?, ?)
2. format_sql
格式化生成的SQL语句,使其更具可读性,但会占用更多屏幕空间。 🙂
<!--hibernate.cfg.xml -->
<property name="format_sql">true</property>
输出量
Hibernate:
insert
into
mkyong.stock_transaction
(CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values
(?, ?, ?, ?, ?, ?)
3. use_sql_comments
Hibernate会将注释放入所有生成的SQL语句中,以提示生成的SQL试图做什么
<!--hibernate.cfg.xml -->
<property name="use_sql_comments">true</property>
输出量
Hibernate:
/* insert com.mkyong.common.StockTransaction
*/ insert
into
mkyong.stock_transaction
(CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values
(?, ?, ?, ?, ?, ?)
休眠配置文件
“ hibernate.cfg.xml
”的完整示例。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mkyong</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
</session-factory>
</hibernate-configuration>
Hibernate SQL参数值如何?
基本的SQL日志记录足以进行常规调试,但是无法显示Hibernate SQL参数值。 需要一些第三方库集成才能将Hibernate SQL参数值显示到控制台或文件中。 检查以下两篇文章: