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