私は hibernate がフードの下で何をしているのかを把握しようとしています。また、p6spy を mysql jdbc ドライバーのプロキシとして使用しているので、データベースに実際に何が行われているのかを確認できます。ただし、p6spy からの出力には少し混乱しています。光に感謝します。
問題はこれです。クラス Test1 の 2 つの新しいオブジェクト、つまり test1a と test1b を作成しています。ログの出力は次のとおりです。
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||
おそらく jdbc addBatch API への呼び出しからの 2 つの「バッチ」ステートメントが表示されますが、「1274973057267|2|1|ステートメント」はそこで何をしているのですか? 2番目の挿入が繰り返されているように見えますが、そうではないことを知っているか、データベースに2行ではなく3行、または少なくともエラーが表示されます。
2 番目の挿入ステートメントが繰り返されるのはなぜですか?
spy.properties で「バッチ」を除外すると、この奇妙で不正な行しか表示されません。
イルミネーションをありがとう!