Hibernate 语句执行顺序控制
public class XXDAOHibernateImpl extends HibernateDaoSupport implements IXXDAO<Discount>{ @Override public void allOper(Disc disc) { this .deleteXXInfos(); //...A this .getSessionFactory().getCurrentSession().flush(); this .update(disc); //...B this .getSessionFactory().getCurrentSession().flush(); this .deleteDist(); //...C } //hibernate在同一个事务中的语句执行顺序不一定是按照我书写的顺序去执行 //而是先缓存然后再一次性执行,而且顺序可能和我们程序的书写顺序来发送语句 //但是有时候由于业务逻辑的要求,必须按照书写的顺序来 //因此在需要调用flush()来保证前面放入缓存的语句马上执行。 //getCurrentSession():会获取当前线程中的session,如果没有的话则创建,并且和当前线程绑定 //并且getCurrentSession()不用自己去关闭 //HibernateDaoSupport中的getSession()如果也会先获取和当前线程绑定的session对象, //所以实际获取的是同一个对象: //this.getSessionFactory().getCurrentSession() == this.getSession().......//其他方法略.....} |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步