Pregunta

Estoy tratando de llegar a enfrentarse con lo que está haciendo hibernación bajo el capó, y estoy usando p6spy como un proxy para el controlador JDBC de MySQL para que pueda ver lo que realmente está pasando a la base de datos. Estoy un poco confundido por la salida de p6spy sin embargo - agradecido por cualquier luz

!

El problema es el siguiente. Estoy creando dos nuevos objetos de la clase Prueba1, a saber test1a y test1b. La salida de los registros de mi es la siguiente:

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

Puedo ver dos declaraciones 'lote', presumiblemente de las llamadas a la API JDBC addBatch, pero ¿qué es eso 1274973057267 | 2 | 1 | declaración 'haciendo allí? Parece que la segunda inserción se está repetido, pero sé que no es ni lo vería 3 filas en mi db y no dos, o al menos un error.

¿Por qué yo estoy viendo la segunda instrucción de inserción repetida?

Si me excluyo 'batch' en mis spy.properties, sólo veo esta línea extraña, sin escrúpulos.

Gracias por cualquier iluminación!

¿Fue útil?

Solución

Ah - Veo el problema, que parece ser debido a lo que tengo que decir es una decisión de diseño bastante sorprendente en p6spy

.

Al parecer, para las declaraciones por lotes, se tomó la decisión de iniciar la sesión declaraciones a medida que se añaden a la mezcla, y luego mostrar la última declaración ejecutada cuando el lote se ejecuta realmente! Una vez que sepa que eso es lo que hace la herramienta, supongo que se puede entender por qué está ahí, pero es totalmente confuso y contrario a la intuición, a menos que le sucede que ha leído el hilo aquí:

http://sourceforge.net/projects/p6spy/forums / foro / 166969 / tema / 666.877

Otros consejos

En el archivo * spy.propertie * s, la propiedad predeterminada de excludecategories es [ info,debug,result,batch ], Puede excluir la batch categoría, por lo que recibirá lo que desea.

el extremo de cola de la misma (513) se ve como parte de la marca de tiempo text alt

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top