代码1_save:
super
.getHibernateTemplate().save(user);
System.out.println( " : " + user.getId());
System.out.println( " : " + user.getId());
输出1:
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
)
: 9
: 9
代码2_merge:
super
.getHibernateTemplate().merge(user);
System.out.println( " : " + user.getId());
System.out.println( " : " + user.getId());
输出2:
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
)
: 0
: 0
代码3_merge:
user
=
(User)
super
.getHibernateTemplate().merge(user);
System.out.println( " : " + user.getId());
System.out.println( " : " + user.getId());
输出3:
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
)
: 11
: 11
当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到
一个持久对象B,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态
继续看代码:
super
.getHibernateTemplate().save(user);
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
输出:
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
,
?
)
: 13
Hibernate: update user set userid =? , userpwd =? , userques =? , userans =? , usermail =? , integral =? , grade =? , sex =? , realname =? where id =?
: 13
Hibernate: update user set userid =? , userpwd =? , userques =? , userans =? , usermail =? , integral =? , grade =? , sex =? , realname =? where id =?
super
.getHibernateTemplate().merge(user);
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
-------------------------
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
:0
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
-------------------------
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
:0
其实,我们也可以这样显示修改状态。
user
=
(User)
super
.getHibernateTemplate().merge(user);
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
--------------------
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values ( ? , ? , ? , ? , ? , ? , ? , ? , ? )
: 16
Hibernate: update user set userid =? , userpwd =? , userques =? , userans =? , usermail =? , integral =? , grade =? , sex =? , realname =? where id =?
user.setUserans( " 杭州BST " );
System.out.println( " : " + user.getId());
--------------------
Hibernate: insert into user (userid, userpwd, userques, userans, usermail, integral, grade, sex, realname) values ( ? , ? , ? , ? , ? , ? , ? , ? , ? )
: 16
Hibernate: update user set userid =? , userpwd =? , userques =? , userans =? , usermail =? , integral =? , grade =? , sex =? , realname =? where id =?
转载: http://www.blogjava.net/beijing2008/articles/317924.html