关于对“如何使用hibernate的event/eventlistener ”的补充
2007-04-17 13:00
351 查看
我在前面说到Hibernate的event/eventlistener的作用,没有了解它的据体实现机制。
我在应用中遇到这个问题,就是在一个实体Bean中,要插入的记录的某些字段不能为空,但我想在Listener中对那些不能为空的字段加入对应的值 ,比如时间信息什么的,但显示不能插入,好像那个Listener没有起作用。
于是,我把那些不能为空的值全部设置好,再在Listener里把那些信息进行了更改,最后,我发现在产生了两条记录,一条是插入语句,一条是update语句,这搞得我莫名其妙,为什么会产生两条HQL呢?
最后我在数据库中得到了结果,那就是----那条update是Listener产生的!
也就是说,Listener并没有在Session插入数据之前对实体对象的值进行了更改,而是在记示插入之后再对Listener里重设的属性进行update更改。这样似乎增加了开销,但我对它的性能进行了简单的测试,发现并没有增加太多的开销,可能我的测试没有进行大数据的操作,或没有大数量的操作!
我也想在插入之前对实体对象的属性值进行更改,但我试了很多的类都无发达到效果,如果有谁已经可以把那产生两条语句的操作整成一条语句一次性插入操作,请不吝赐教!谢谢了!
我在应用中遇到这个问题,就是在一个实体Bean中,要插入的记录的某些字段不能为空,但我想在Listener中对那些不能为空的字段加入对应的值 ,比如时间信息什么的,但显示不能插入,好像那个Listener没有起作用。
于是,我把那些不能为空的值全部设置好,再在Listener里把那些信息进行了更改,最后,我发现在产生了两条记录,一条是插入语句,一条是update语句,这搞得我莫名其妙,为什么会产生两条HQL呢?
最后我在数据库中得到了结果,那就是----那条update是Listener产生的!
也就是说,Listener并没有在Session插入数据之前对实体对象的值进行了更改,而是在记示插入之后再对Listener里重设的属性进行update更改。这样似乎增加了开销,但我对它的性能进行了简单的测试,发现并没有增加太多的开销,可能我的测试没有进行大数据的操作,或没有大数量的操作!
我也想在插入之前对实体对象的属性值进行更改,但我试了很多的类都无发达到效果,如果有谁已经可以把那产生两条语句的操作整成一条语句一次性插入操作,请不吝赐教!谢谢了!
相关文章推荐
- 如何使用hibernate的event/eventlistener
- 关于oracle blob类型、clob类型在hibernate 中如何使用注解
- 【转】关于如何在类库中使用Response,Request,Server,Session!
- 关于本地管理的Extent分配使用 Uniform 方式时,如何设置这个数字
- 关于使用hibernate出现org.hibernate.LazyInitializationException: could not initialize proxy - no Session错误
- 关于dubbo的理解,使用,常见问题以及如何更好的实施服务化
- ASP.Net下如何解决关于Access数据库“操作必须使用一个可更新的查询”问题
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 关于hibernate混合使用占位符和命名参数
- Nagios遇到的一点问题--关于如何使用timeperiod
- 关于如何实现在整合struts2和hibernate4框架下对many-to-one级联数据的存储
- 关于如何在不使用虚函数的情况下父类调用子类成员函数的问题
- 关于如何使用C++来二次开发vega prime
- 关于element.addEventListener和element.attachEvent使用
- 关于如何使用反射声明一个泛型类型变量(泛型参数是动态的)的问题
- 关于如何使用websocket 接收并显示图片或者操作二进制
- Apidemo 中关于如何使用ScrollView说明
- 关于vc++6.0如何使用zlib.lib的问题解决
- 如何使用hibernate
- 【Android】[转] Android屏幕旋转使用OrientationEventListener的监听