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().......//其他方法略.....}