小弟用hibernate写了个账户密码修改查询,再看例子的时候发现在dao层的update段代码以下是update段代码
-------------------
//修改对象
public static void update(User user)
{
try{
session =HibernateUntils.getSession();
tx =session.beginTransaction();
session.update(user);
tx.commit();
}catch(HibernateException e)
{
e.printStackTrace();
SessionClose.close(session, tx);
}
}
----------------------
我在test.class
----------------------
User a = new User("shaw","warpten");
User b = new User("Alice","900518");
User c = new User("Tom","Tom");
User d = new User("Jack","Jack");
User e = new User("Tony","Tony");
User f = new User("Shark","Shark");
// UserDao.save(a);
// UserDao.save(b);
// UserDao.save(c);
// UserDao.save(d);
// UserDao.save(e);
UserDao.update(f);
----------------------------
发现数据库里没有任何变化,请问怎么回事呀,
还有,不如我想User c的密码,该怎么写啊?
还有session.upadte(Object obj)和session.update(String s,Object obj);
请问有什么区别呀 麻烦了!
-------------------
//修改对象
public static void update(User user)
{
try{
session =HibernateUntils.getSession();
tx =session.beginTransaction();
session.update(user);
tx.commit();
}catch(HibernateException e)
{
e.printStackTrace();
SessionClose.close(session, tx);
}
}
----------------------
我在test.class
----------------------
User a = new User("shaw","warpten");
User b = new User("Alice","900518");
User c = new User("Tom","Tom");
User d = new User("Jack","Jack");
User e = new User("Tony","Tony");
User f = new User("Shark","Shark");
// UserDao.save(a);
// UserDao.save(b);
// UserDao.save(c);
// UserDao.save(d);
// UserDao.save(e);
UserDao.update(f);
----------------------------
发现数据库里没有任何变化,请问怎么回事呀,
还有,不如我想User c的密码,该怎么写啊?
还有session.upadte(Object obj)和session.update(String s,Object obj);
请问有什么区别呀 麻烦了!
而你测试代码里面的UserDao.update(f);用的参数f是一个刚刚创立的User对象,所以数据库没有任何变化
你可以先从数据库查询出来一个User然后更新这个User的密码,然后update这个对象
User a = new User("shaw","warpten");
User b = new User("Alice","900518");
User c = new User("Tom","Tom");
User d = new User("Jack","Jack");
User e = new User("Tony","Tony");
User f = new User("Shark","Shark");// UserDao.save(a);
// UserDao.save(b);
// UserDao.save(c);
// UserDao.save(d);
// UserDao.save(e);UserDao.update(f);
这个注释了的是什么意思? 新建的这些对象保存到数据库没(执行SAVE操作)?
要跟新成功你需要持久化的对象
比如拿你的这段代码来说,使用以下方式肯定是可以更新成功的
User a = new User("shaw","warpten");
session.save(a);
//这里的save方法会返回一个可序列化对象,这个对象就是你保存到数据库
//持久化的a(包含了生成的主键);当然如果你的UserDao.save封装的是session.save那么就可
//以直接使用了
a.setPassword("newPwd");
UserDao.save(a); //这里就可以更新了否则你需要知道当前跟新的是那条记录,并且你需要在调用hibernate的update方法前先要或许该更新记录的持久化数据,也就是需要select到这条记录后在进行 update