java - hibernate p6spy问题

标签 java hibernate p6spy

我正试图了解 hibernate 在幕后做了什么,我使用 p6spy 作为 mysql jdbc 驱动程序的代理,这样我就可以看到真正进入数据库的是什么。然而,我对 p6spy 的输出有点困惑 - 感谢任何光线!

问题是这样的。我正在创建类 Test1 的两个新对象,即 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||

我可以看到两个“批处理”语句,大概来自对 j​​dbc addBatch api 的调用,但是“1274973057267|2|1|statement”在那里做什么?看起来第二个插入被重复了,但我知道它不是,否则我会在我的数据库中看到 3 行而不是两行,或者至少是一个错误。

为什么我看到重复的第二个插入语句?

如果我在我的 spy.properties 中排除“batch”,我只会看到这条奇怪的流氓行。

感谢任何照明!

最佳答案

啊 - 我看到了问题,这似乎是由于我不得不说的是 p6spy 中一个相当令人惊讶的设计决定。

显然对于批处理语句,决定在将语句添加到批处理时记录它们,然后在实际执行批处理时显示执行的最后一条语句!一旦您知道该工具的作用,我想您就可以理解它存在的原因,但除非您碰巧阅读了此处的主题,否则它完全令人困惑且违反直觉:

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

关于java - hibernate p6spy问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922443/

相关文章:

java - 这段代码中的增长函数和阶数是什么?

java - 如何获取有关第一个 Activity 的按钮单击的信息并在第三个 Activity 中使用它? - 安卓

Hibernate::组合列值

java - 带有参数 jsf 的 UPDATE HQL 查询中的 IllegalArgumentException

java - 计算文本文件中从 A 点到 B 点的行数

Java ArrayList.add 覆盖值

java - 无法以 Spring 形式绑定(bind)属性

java - 使用日志工具记录 HQL 返回值时遇到问题

p6spy - 具体如何使用OracleConnectionPoolDataSource配置P6Spy