When using Hibernate, if you log the Hibernate SQL statements, you will see this:


Hibernate: insert into student (email, first_name, last_name, id) values (?, ?, ?, ?)

However, for debugging your application, you want to see the actual parameter values in the Hibernate logs. Basically, you want to get rid of the question marks in the Hibernate logs.

You can view the actual parameters by viewing the low-level trace of the Hibernate logs. This is not set up by default. However, we can add log4j to allow us to see these low-level logs.

Here is an overview of the process:

1. Add log4j to your project classpath
2. Add log4j.properties to your “src” directory


Here are the detailed steps:

1. Add log4j to your project classpath

1a. Download log4j v1.2.17 from this link:
http://central.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar

1b. Copy this file to your project’s lib directory

bind-parameters-log4j-jar-file

1c. Right-click your Eclipse project and select Properties

1d. Select Build Path > Libraries > Add JARS…

1e. Select the log4j-1.2.17.jar file from the lib directory

bind-parameters-log4j-jar-build-path

 

2. Add log4j.properties to your “src” directory

2a. Copy the text from below

2b. Save this file in your “src” directory

bind-parameters-log4j-properties

Note: This file has an important setting:

log4j.logger.org.hibernate=TRACE

This allows you see a low-level trace of Hibernate and this allows you see the real SQL parameter values.


Now run your application. You will see a lot of low-level TRACE logs in the Eclipse Console window.

Right-click in the Eclipse Console window and select Find/Replace…

Search for: binding parameter

You will see the logs with the real parameter values. Congrats!

bind-parameters-output