hibernate problema p6spy
Domanda
sto cercando di fare i conti con quello che Hibernate sta facendo sotto il cofano, e sto usando p6spy come proxy per il driver JDBC mysql in modo da poter vedere cosa sta realmente accadendo al database. Sono un po 'confuso dalla uscita dal p6spy tuttavia - grato per qualsiasi luce
!Il problema è questo. Sto creando due nuovi oggetti della classe Test1, vale a dire test1a e test1b. L'uscita nei miei ceppi è la seguente:
Hibernate:
/* insert com.play.hibernate1.Test1
*/ insert
into
Test1
(name, value, id)
values
(?, ?, ?)
1274973057265|1|1|batch|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values (?, ?, ?)|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values ('Test 1', 10, 5)
Hibernate:
/* insert com.play.hibernate1.Test1
*/ insert
into
Test1
(name, value, id)
values
(?, ?, ?)
1274973057265|0|1|batch|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values (?, ?, ?)|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values ('Test 2', 20, 6)
1274973057267|2|1|statement|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values (?, ?, ?)|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values ('Test 2', 20, 6)
1274973057268|0|1|commit||
Posso vedere due dichiarazioni di 'partita', presumibilmente da chiamate all'API addBatch JDBC, ma che cosa è che '1.274.973,057267 millions | 2 | 1 | dichiarazione' facendo lì? Sembra che il secondo inserto è sempre ripetuta, ma io so che non è o mi vedrebbe 3 righe nel mio db e non due, o almeno un errore.
Perché sto vedendo la seconda dichiarazione dell'inserto ripetuto?
Se io escludo 'lotto' nei miei spy.properties, vedo solo questo, la linea canaglia strano.
Grazie per qualsiasi illuminazione!
Soluzione
Ah - vedo il problema, che sembra essere a causa di quello che ho da dire è una decisione di progettazione piuttosto sorprendente in p6spy
.A quanto pare per le dichiarazioni in batch, la decisione è stata presa per registrare le dichiarazioni che vengono aggiunti al lotto, e poi mostrare la dichiarazione ULTIMO eseguito quando il batch viene effettivamente eseguito! Una volta che sai che è quello che lo strumento fa, penso che si possa capire il motivo per cui è lì, ma è completamente confuso e contro-intuitivo a meno che non vi capita di avere leggere il thread qui:
http://sourceforge.net/projects/p6spy/forums / forum / 166.969 / topic / 666.877
Altri suggerimenti
Nel file * spy.propertie * s, la proprietà predefinita di excludecategories
è [ info,debug,result,batch
],
È possibile escludere il batch
categoria, allora si otterrà ciò che si desidera.
La coda di esso (513) Sembra che parte del timestamp