关于hibernate的一点讨论
hibernate的session.update(Object)方法,是会update全部字段,但是在实际中,我们往往不需要去更新全部字段。
设想这样一个场景:一个表,有十几个字段,id是唯一标识,state是审批状态,现在我们要实现数据审批功能。
如果使用操作对象的方式来实现,首先,要根据id获取到对象,然后setState,最后update对象。整个过程最终映射的sql应该是:
select column1,column2......from table where id=?
update table set column1=?,column2=?..... where id=?
假如hibernate实现了局部更新字段的功能:即只有调用了setXXX方法的属性才会update
那么上面那个场景,我们只需要new 一个对象,然后setId,setState,然后update对象,最终生成的sql就是:
update table set state=? where id=?
两者比较,后者代码更简练,且性能更高。
问题来了,为啥hibernate不实现这个局部更新字段的功能呢?
(当然,我知道,使用Hql可以实现,我现在讨论的是使用操作对象的方式)
请各位大神讨论!谢谢