关于update方法有几个地方不明白。
类似上面的方法,调用 select 方法查询出一个实体类对象,方法外部对该对象进行修改,然后传入 update 方法修改。
由于 select 和 update 使用的是两个独立的session,所以调用 session.update 方法的时候会抛出异常,因为传入的obj状态属于托管状态,不是持久态,是这样没错吧。
public Object doSelectXXX(){
Session session = HibernateUtil.getSession();
Object result = session.get(....);
session.close();
return result;
}
public boolean doUpdateXXX(Object obj){
Session session = HibernateUtil.getSession();
session.beginTr....();
session.update(obj);
// commit
session.close();
return true;
}
/*类似上面的方法,调用 select 方法查询出一个实体类对象,方法外部对该对象进行修改,然后传入 update 方法修改。
由于 select 和 update 使用的是两个独立的session,所以调用 session.update 方法的时候会抛出异常,因为传入的obj状态属于托管状态,不是持久态,是这样没错吧。*/
/*
下面是我的问题,在spring里集成了hibernate。使用hibernatetemplate类进行操作,配置了相应的事务,并且设置事务隔离级别为:REQUIRES_NEW,总是开启一个新的事务,我理解的spring对session事务的管理应该是方法执行之前打开事务,方法执行之后提交事务,同时关闭session,那么这就和以上的类似了。
按我预想的应该是会抛出异常的,但是却没有,不知道我哪里理解错了?
以下是spring集成hibernate之后的简略代码。
*/
public Object doSelectXXX(){
return getHibernateTemplate().get(......);
}
public boolean doUpdateXXX(Object obj){
getHibernateTemplate().update(obj);
return true;
}