hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了
答案:3 悬赏:80 手机版
解决时间 2021-03-29 12:23
- 提问者网友:沉默的哀伤
- 2021-03-29 00:57
hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-03-29 01:48
hibernate对象的三种状态。
瞬时态(没有id,不与session关联)
持久态(有id,与session关联)
托管态(有id,不与session关联)
User user = new User();//新建的对象是瞬时态
session.save(user);//save后,user变成持久态
user.setAge(20);//对持久态的改变,会在session提交时自动更新数据库
session.close();//session关闭后,user变成托管态
user.setAge(19);//这时改变其属性,将不会自动更新数据库
session.update(user);//更新托管态对象到数据库,并且将其重新变为持久态。
最后:
session.get()
session.load()
session.createCriteria().list()
查询出来的都是持久态。
瞬时态(没有id,不与session关联)
持久态(有id,与session关联)
托管态(有id,不与session关联)
User user = new User();//新建的对象是瞬时态
session.save(user);//save后,user变成持久态
user.setAge(20);//对持久态的改变,会在session提交时自动更新数据库
session.close();//session关闭后,user变成托管态
user.setAge(19);//这时改变其属性,将不会自动更新数据库
session.update(user);//更新托管态对象到数据库,并且将其重新变为持久态。
最后:
session.get()
session.load()
session.createCriteria().list()
查询出来的都是持久态。
全部回答
- 1楼网友:往事隔山水
- 2021-03-29 04:11
你在setAge的时候直接操作的是user这个引用指向的那个对象的内存,set完之后这个对象中的age就已经是20了,这个不涉及到数据库的增删改查
- 2楼网友:孤独的牧羊人
- 2021-03-29 03:15
save以后user就在session中了,hibernate有个自动提交功能(auto commit),session结束时可以自动将session里修改过的内容提交到数据库,所以,就是这个现象。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯