Scott,
You can activate debuSQL from application.conf and then look for the logs.
Database low level logging may be an option, with postgreSQL we activate log_statement = 'all' in postgresql.conf and then instruct postgres to reload configuration issuing an HUP signal, this is some bash code:
vim /etc/postgresql/9.3/main/postgresql.conf
grep log_statement /etc/postgresql/9.3/main/postgresql.conf
log_statement = 'all' # none, ddl, mod, all
kill -HUP `cat /var/run/postgresql/9.3-main.pid`
tail -f /var/log/postgresql/postgresql-9.3-main.log |egrep -v PKTABLE_CAT\|TABLE_CAT\|nspname
As you see in the tail command we exclude metadata queries by hibernate.
Then you can start in debug mode your app step by step and keep atention to the queries that appear after the instructions you want to monitor,
for updates you may isse a JPA.em().flush() to force the database access after and update.
The JPA specification stands some rules for example: @ManyToOne are loader Eagerly and @OneToMany area lazy loaded.
As i said before our applications almost freeze without max_fetch_depth setted.
Good Luck
Hans