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!

È stato utile?

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 alt text

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top