[Hibernate] Hiển thị SQL của hibernate ra console – show_sql , format_sql và use_sql_comments

Hibernate có 1 hàm để enable tính năng ghi log tất cả các lệnh SQL được tạo ra tại console. Có thể kích hoạt nó bằng cách tạo 1 property “show_sql” trong file cấu hình Hibernate “hibernate.cfg.xml“. Hàm này tốt cho xử lý sự cố cơ bản và để xem những gì mà Hibernate đang làm phía sau


1. show_sql
Enable ghi log tất cả lệnh SQL ra màn hình console

XML:
<!--hibernate.cfg.xml -->
<property name="show_sql">true</property>
Kết quả
Code:
Hibernate: insert into mkyong.stock_transaction
(CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
values (?, ?, ?, ?, ?, ?)


2. format_sql
Format SQL được hibernate generate ra để dễ đọc hơn, sẽ chiếm nhiều không gian màn hình hơn.

XML:
<!--hibernate.cfg.xml -->
<property name="format_sql">true</property>
Kết quả
Code:
Hibernate:
    insert
    into
        mkyong.stock_transaction
        (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
    values
        (?, ?, ?, ?, ?, ?)

3. use_sql_comments
Hibernate sẽ đưa comment vào bên trong tất cả câu SQL, để tạo gợi ý cho những gì được tạo ra, hãy thử cách

XML:
<!--hibernate.cfg.xml -->
<property name="use_sql_comments">true</property>
Kết quả
Code:
Hibernate:
    /* insert com.mkyong.common.StockTransaction
        */ insert
        into
            mkyong.stock_transaction
            (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
        values
            (?, ?, ?, ?, ?, ?)

File cấu hình Hibernate
Code đầy đủ trong file “hibernate.cfg.xml“.

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>

Làm thế nào để hiển thị giá trị của SQL parameter trong Hiberenate?
Log SQL cơ bản đủ tốt để fix những bug thông thường, tuy nhiên, nó không thể hiển thị giá trị tham số SQL. Cần tích hợp một số thư viện của bên thứ ba để hiển thị giá trị
tham số SQL ra console hoặc file. Xem 2 bài viết bên dưới:
  1. Cách hiển thị giá trị các hibernate sql parameter – P6Spy
  2. Cách hiển thị giá trị các hibernate sql parameter – Log4j


Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :D

Bài viết tham khảo tại: https://mkyong.com/hibernate/hibernate-display-generated-sql-to-console-show_sql-format_sql-and-use_sql_comments/
 
Sửa lần cuối:

Bình luận