質問

Hibernateがボンネットの下で行っていることを把握しようとしています。MySQLJDBCドライバーのプロキシとしてP6SPYを使用しているので、データベースに実際に何が起こっているのかがわかります。私は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番目の挿入ステートメントが繰り返されるのを見ているのですか?

spy.propertiesで「バッチ」を除外した場合、この奇妙で不正なラインだけが表示されます。

照明をありがとう!

役に立ちましたか?

解決

ああ - 私は問題を見ていますが、これは私が言わなければならないことがP6SPYでかなり驚くべきデザインの決定であると思われます。

どうやらバッチされたステートメントの場合、バッチに追加されると、声明を記録する決定が下され、バッチが実際に実行されたときに実行された最後のステートメントが表示されました!それがツールが行うことを知ったら、なぜそこにあるのかを理解できると思いますが、ここでスレッドを読んでいない限り、完全に混乱し、直感に反します。

http://sourceforge.net/projects/p6spy/forums/forum/166969/topic/666877

他のヒント

in *spy.propertie *sファイル、デフォルトのプロパティ excludecategories は [info,debug,result,batch]、除外できます batch カテゴリ、あなたはあなたが望むものを手に入れます。

それのテールエンド(513)はタイムスタンプの一部のように見えます alt text

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top