Mysql
 sql >> база данни >  >> RDS >> Mysql

Без значение какво, не мога да пакетирам MySQL INSERT оператори в Hibernate

Вероятно вашите заявки се пренаписват, но няма да разберете дали, като погледнете регистрационните файлове на Hibernate SQL. Hibernate не пренаписва изразите за вмъкване - MySQL драйверът ги пренаписва. С други думи, Hibernate ще изпрати множество оператори за вмъкване на драйвера и след това той ще ги пренапише. Така че регистрационните файлове на Hibernate ви показват само какво SQL Hibernate е изпратил на драйвера, а не какъв SQL е изпратил драйверът към базата данни.

Можете да потвърдите това, като активирате параметъра profileSQL на MySQL в URL адреса на връзката:

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

Използвайки пример, подобен на вашия, ето как изглежда моят изход:

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 реда се регистрират от Hibernate, въпреки че това всъщност не се изпраща към базата данни на MySQL. Последният ред идва от драйвера на MySQL и ясно показва едно пакетно вмъкване с множество стойности и това всъщност се изпраща към базата данни на 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. Редът на колоните в израза за избор влияе ли на скоростта на заявката?

  2. Използвайте множество колони като уникален идентификатор за mysql

  3. Предайте параметър на командния ред на MySQL скрипт

  4. Изключете предупрежденията и грешките в PHP и MySQL

  5. InnoDB:Грешка номер 23 на операционната система във файлова операция