hibernate在加载持久化对象时不会调用setter

做多媒体时,某些持久化对象类中有几个瞬态字段,他们的值是由几个持久化字段经过一定计算得出的,所以我为了省事,便在那些持久化字段的setter中一并把瞬态字段的值给设了,心想hibernate从数据库读出数据加载成对象时应该会调用这些方法吧,这样就不用特意去找地方给那些瞬态字段设置了吧,可是事与愿违,实际运行起来发现setter根本没有被执行,我估计是hibernate直接用反射给类中的变量设值,无奈,只好采用别的方案,回头想想,我之所以想当然地认为setter会被调用是因为struts2和spring都是这么干的,毕竟这是javabean规范,但为什么hibernate偏偏这么非主流,我想可能是因为出于性能考虑吧,但也不排除是因为hibernate的编写者没遵循规范,是哪种原因还不得而知,但是可以提醒大家以后和我有类似的想法的时候就得注意了。顺带一提,我这边用的是hibernate3.2,其他版本没测试过!

猜你喜欢

转载自sharonfruit.iteye.com/blog/1095859
今日推荐