关于hibernate的一点讨论

xiaozhi7566 xiaozhi7566 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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可以实现,我现在讨论的是使用操作对象的方式)
请各位大神讨论!谢谢
...全文
评论 20
收藏 已收藏
分享
返回顶部
xiaozhi7566
Java EE 67,535 成员 225,843 内容