关于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可以实现,我现在讨论的是使用操作对象的方式)
请各位大神讨论!谢谢
设想这样一个场景:一个表,有十几个字段,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可以实现,我现在讨论的是使用操作对象的方式)
请各位大神讨论!谢谢
...全文
相关推荐
Hibernate多表查询.txt
通过以上讨论,我们可以看到,Hibernate的多表查询功能不仅强大而且灵活,能够满足各种复杂的业务需求。
hibernate criteria 分组 排序 关联
`Criteria`提供了一个非常灵活的方式来实现这一点。
hibernate的一点总结
【hibernate的一点总结】Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库,将Java类与数据库表进行映射,从而避免了直接编写SQL
hibernate的映射的一点总结
近期整理的hibernate映射的一点总结,希望可以帮到一些人
hibernate2.1与hibernate3.0的区别
Hibernate是一个流行的对象关系映射(ORM)框架,用于Java应用,它在不同的版本间引入了许多关键改进和变化。本文主要讨论了Hibernate 2.1与Hibernate 3.0之间的区别,这


