请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于更新操作的疑问

关于更新操作的疑问

老师,jpa里面如果从数据库中查出来的实体应该是托管状态吧persistent。这样的话对该实体进行set操作会自动触发更新。那么这样为啥还需要调用save方法来持久化,set方法触发的更新会有性能问题吗?谢谢老师

正在回答 回答被采纳积分+3

1回答

张勤一 2020-09-28 10:22:11

同学你好:

    首先,你这里所说的“托管状态”我不太明白是什么含义;第二,set 操作是肯定不会触发自动更新,因为你可以考虑一个场景:

    假如你的表有 100个字段,你需要对 100个字段做更新,那么,是不是每个属性 set 就会触发一次更新呢?这显然是不符合常理的。

    一定需要调用 save 方法才会触发持久化。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

1 回复 有任何疑惑可以回复我~
  • 提问者 Lyn849060089 #1
    jpa中实体对象有四种状态,托管状态、持久化状态、游离状态和瞬时状态。当持久化状态(数据库的数据)被find()出来就变成了托管状态被会话所管理,此时对其进行set操作,持久层框架会在事务提交后会将托管状态的对象自动更新到数据库。
    而且我在代码中测试确实是这样的。所以我想说如果对单个记录进行更新操作,是否就没有必要调用save方法进行全量更新了?谢谢老师
    回复 有任何疑惑可以回复我~ 2020-09-28 10:43:48
  • 张勤一 回复 提问者 Lyn849060089 #2
    如果是这样,就不需要全量更新了
    回复 有任何疑惑可以回复我~ 2020-09-28 11:30:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信