关于对“如何使用hibernate的event/eventlistener ”的补充

我在前面说到Hibernate的event/eventlistener的作用,没有了解它的据体实现机制。

我在应用中遇到这个问题,就是在一个实体Bean中,要插入的记录的某些字段不能为空,但我想在Listener中对那些不能为空的字段加入对应的值 ,比如时间信息什么的,但显示不能插入,好像那个Listener没有起作用。

于是,我把那些不能为空的值全部设置好,再在Listener里把那些信息进行了更改,最后,我发现在产生了两条记录,一条是插入语句,一条是update语句,这搞得我莫名其妙,为什么会产生两条HQL呢?

最后我在数据库中得到了结果,那就是----那条update是Listener产生的!

也就是说,Listener并没有在Session插入数据之前对实体对象的值进行了更改,而是在记示插入之后再对Listener里重设的属性进行update更改。这样似乎增加了开销,但我对它的性能进行了简单的测试,发现并没有增加太多的开销,可能我的测试没有进行大数据的操作,或没有大数量的操作!

我也想在插入之前对实体对象的属性值进行更改,但我试了很多的类都无发达到效果,如果有谁已经可以把那产生两条语句的操作整成一条语句一次性插入操作,请不吝赐教!谢谢了!

你可能感兴趣的:(关于对“如何使用hibernate的event/eventlistener ”的补充)