Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa pun yang terjadi, saya tidak dapat mengelompokkan pernyataan MySQL INSERT di Hibernate

Sepertinya kueri Anda sedang ditulis ulang tetapi Anda tidak akan tahu apakah dengan melihat log SQL Hibernate. Hibernate tidak menulis ulang pernyataan insert - driver MySQL menulis ulang mereka. Dengan kata lain, Hibernate akan mengirimkan beberapa pernyataan penyisipan ke driver, dan kemudian driver akan menulis ulang. Jadi, log Hibernate hanya menunjukkan apa yang dikirim SQL Hibernate ke driver, bukan SQL yang dikirim driver ke database.

Anda dapat memverifikasi ini dengan mengaktifkan parameter profileSQL MySQL di url koneksi:

<b:property name="jdbcUrl" value="jdbc:mysql://server:3306/db?autoReconnect=true&amp;rewriteBatchedStatements=true&amp;profileSQL=true" />

Menggunakan contoh yang mirip dengan milik Anda, seperti inilah tampilan output saya:

insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
Wed Feb 05 13:29:52 MST 2014 INFO: Profiler Event: [QUERY]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) duration: 1 ms, connection-id: 81, statement-id: 33, resultset-id: 0, message: insert into Person (firstName, lastName, id) values ('person1', 'Name', 1),('person2', 'Name', 2),('person3', 'Name', 3),('person4', 'Name', 4),('person5', 'Name', 5),('person6', 'Name', 6),('person7', 'Name', 7),('person8', 'Name', 8),('person9', 'Name', 9),('person10', 'Name', 10)

10 baris pertama sedang dicatat oleh Hibernate meskipun ini bukan yang sebenarnya dikirim ke database MySQL. Baris terakhir berasal dari driver MySQL dan dengan jelas menunjukkan satu batch insert dengan beberapa nilai dan itulah yang sebenarnya dikirim ke database MySQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan SPARQL untuk mendapatkan semua induk dari sebuah simpul

  2. Menghapus dari tabel MySQL dengan batasan kunci asing

  3. Kesalahan #2002 Tidak dapat terhubung ke server MySQL lokal melalui soket '/Applications/MAMP/tmp/mysql/mysql.sock' (2)

  4. Beberapa dan indeks tunggal

  5. MySQL sekarang () ubah zona waktu