Mencetak Rentetan Pertanyaan dengan Nilai Parameter dalam Hibernate
Apabila bekerja dengan Hibernate, ia boleh berguna untuk mencetak pertanyaan SQL yang dijana untuk memudahkan penyahpepijatan atau analisis prestasi. Secara lalai, pertanyaan ini dilog dengan tanda soal (?) ruang letak untuk nilai parameter, yang boleh menjadikannya mencabar untuk memahami data sebenar yang dihantar.
Boleh Hibernate Mencetak Pertanyaan SQL dengan Nilai Sebenar?
Jawapan ringkasnya ialah tidak, Hibernate tidak secara langsung menyediakan cara untuk log pertanyaan SQL dengan nilai parameter sebenar. Walau bagaimanapun, terdapat beberapa kaedah untuk mencapai fungsi ini.
Mendayakan Pengelogan untuk Parameter JDBC
Satu pendekatan adalah untuk membolehkan pengelogan untuk kategori berikut:
Contoh konfigurasi log4j untuk tujuan ini:
log4j.logger.org.hibernate.SQL=debug log4j.logger.org.hibernate.type=trace
The org.hibernate.SQL logger adalah bersamaan dengan hibernate.show_sql=harta sebenar dan log semua SQL kenyataan. Logger org.hibernate.type, apabila ditetapkan untuk mengesan, memberikan maklumat terperinci tentang parameter JDBC, termasuk nilai terikatnya.
Menggunakan Pemacu Proksi JDBC
Penyelesaian lain adalah untuk menggunakan pemacu proksi JDBC, seperti P6Spy. Alat ini memintas panggilan JDBC dan menyediakan pengelogan masa nyata pernyataan SQL, termasuk nilai parameter terikat. P6Spy boleh dikonfigurasikan melalui fail konfigurasi atau menggunakan pembolehubah persekitaran.
Dengan menggunakan salah satu kaedah ini, ia menjadi mungkin untuk mencetak pertanyaan SQL dengan nilai parameter sebenar, mempertingkatkan proses penyahpepijatan dan analisis apabila bekerja dengan Hibernate.
Atas ialah kandungan terperinci Bolehkah Hibernate Log Pertanyaan SQL dengan Nilai Parameter Sebenar Daripada Pemegang Tempat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!