在我的应用程序中,我有一个服务层,其中为此服务中的所有方法声明了spring事务边界.服务层内部联系dao.这里我的问题是如果在dao方法中指定getHibernateTemplate.flush(),它会立即更新数据库,或者直到服务层方法完成,它不会提交更改.请帮帮我.
class someservice{
public void somemethod(){
activitydao.save(domainobj);
}
}
class ActivityDAO extends HibernateDaoSupport{
public void save(domainobj){
getHibernateTemplate().save(domainobj);
getHibernateTemplate().flush(); ----> will it update db immediately ?
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,拉姆基.
flush()将对该hibernate会话管理的所有持久实体进行脏检查.如果持久化实体是脏的,那么hibernate将立即向DB发出UPDATE SQL.
但是,仅发出UPDATE SQL并不意味着数据实际上已保存到DB,您必须提交事务以确认实际将数据保存到DB.因此,flush()只发出没有任何COMMIT到数据库的UPDATE SQL意味着如果以后发现任何错误,您可以回滚数据.
当您使用Spring来管理事务时,如果您的方法成功返回,事务将自动提交.如果在方法返回之前抛出任何异常,则事务将自动回滚.
| 归档时间: |
|
| 查看次数: |
6193 次 |
| 最近记录: |