1.若是hibernate的hbm.xml配置的<generator class="native"></generator>,
则在一个Transaction tx=session.beginTransaction();里面,
session.save(对象)时候,只是会产生select hibernate_sequence.nextval from dual,这样并没有产生insert语句,
在后面加了session.flush(),才产生insert语句,但是此时未提交事务,所以用另个session查看的时候,并不能看见插入的数据,当tx.commit();时候,将数据真正插入数据库里,不能回滚。
2.如果上面的例子没有加session.flush(),这样的场景:在一个Transaction tx=session.beginTransaction();里面,-->session.save(对象)-->tx.commit();这样也能在数据库里插入数据,因为tx.commit();时候里面会用session.flush()。
3.若是一个事务里没有用session.flush()和tx.commit();只是session.close()。那么在数据库里不会有数据。因为没有产生insert语句。