现在又一个类User,里面有三个属性id,username,password。对应的数据库中表user_tb,表中有两条数据分别是:1,zhang,zhang和2,li,li。
为什么以下操作也会对数据库进行修改啊?
User user=new User();
user.setId(1);
user.setUsername("zhang");
user.setPassword("zhang111");
session.update(user);
执行完以上方法之后,数据库中的记录变为1,zhang,zhang111和2,li,li。
用new创建一个对象后不是瞬时状态的吗?怎么也会对数据库又影响啊。
难道除了用save()或saveorupdate()方法和用hibernate加载后对象变为持久状态,直接用update方法更新一个瞬时对象也会对数据库有影响吗?
为什么以下操作也会对数据库进行修改啊?
User user=new User();
user.setId(1);
user.setUsername("zhang");
user.setPassword("zhang111");
session.update(user);
执行完以上方法之后,数据库中的记录变为1,zhang,zhang111和2,li,li。
用new创建一个对象后不是瞬时状态的吗?怎么也会对数据库又影响啊。
难道除了用save()或saveorupdate()方法和用hibernate加载后对象变为持久状态,直接用update方法更新一个瞬时对象也会对数据库有影响吗?
解决方案 »
- 大家帮看看吧,
- 关于ActiveMQ,求大侠指导,高分送!
- 数据库设计问题!
- struts2问题:谁会写一个拦截器,可以把action里的方法名开头是set且参数是String的方法,执行前,自动执行我写的一个方法
- 面试问java里堆和栈的区别,怎么说
- 什么是GA
- 引起阻塞的方法有哪些?求高手解答...java
- 用JAXB将Java对象转成XML,JAVA类用注解定义,如何使空的字段也生成XML节点
- 高分请java高高手帮忙~~!!
- 怎么才能学好java语言,有什么好的建议吗?我学了有一段时间了,总觉得还是不入门,向各位java高手请教,来者有分,谢谢
- 初学SSH,请大虾推荐一本讲spring2.x的书,及ssh案例的书
- 目前软件公司里面流行的建模工具有哪些??
User user=new User();
user.setId(1);
user.setUsername("zhang");
user.setPassword("zhang111"); 你创建的对象属于游离对象,而不是瞬时对象。以面我把三种状态的特点说一下:
1.瞬时状态:这时的对象不受session的管理,并且对象的OID在DB中没有对应的记录。也就是对象的id在数据库中找不到相应的记录
2.持久状态:这时的对象受sesison的管理,且对象的OID在DB中有对应的记录。
3.游离状态:这时的对象不受session的管理,且对象的OID在DB中有对应的记录。如果把这三种状态搞清楚了,你的问题应该会想清楚的。
所以数据会被保存的!!!
hibrenate 确定数据是不是持久状态是跟据 主健id 来的
开始没有session,这就是方法体了啊 没有其他的了
是的,如果ID在数据库中不存在就是顺时状态了。调用update调用出错,调用save就会执行insert语句。好多多结论可以做个简单的测试就有了答案。