我想通过MySQL数据库中的唯一ID更新字段。
第一种方法:使用唯一ID (通过uniqueresult())从数据库中获取对象(select * from),然后将期望的值设置为object,然后执行saveOrUpdate。
第二种方法是在DAO实现(update table tab set tab.name=123 where...、executeUpdate())中编写更新查询,结果也是一样的。
执行更新操作的好方法是什么?为什么?
发布于 2017-05-16 19:00:58
如果你正在使用Hibernate,当你可以使用 的.get(),.load(),.merge() .update()方法时,为什么还要在原生的SQL中这样做呢?
下面是Hibernate文档中修改持久化对象的示例:
DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );
cat.setName("PK");
sess.flush(); // changes to cat are automatically detected and persisted要进一步阅读,可以查看Hibernate文档中的和部分。
根据文档:
更新对象状态的最直接的方法是对其执行
load()操作,然后在会话打开时直接操作它。
我希望这回答了您的两个问题,这是执行更新操作的好方法,为什么?
发布于 2017-05-16 18:19:07
没有“好方法”来执行您想要的更新。它完全取决于您的需求。
这两种方法都有效,但第一种方法允许您在不必修改sql查询的情况下更新多个字段。在调用saveOrUpdate方法之前,开发人员有责任关注对象的状态。
第二种方法将确保不会更新数据库中的其他字段。
回答你未来的需求。您是否只需要更新此字段?它在未来会改变吗?这两种方法对应用程序的影响是什么?
然后你就会得到你的答案了。
https://stackoverflow.com/questions/43998216
复制相似问题