increment:hibernate先会查询数据最大id值,然后在最大值加1在进行保存操作。...问题3: 为什么在事务环境下,通过get方法得到的对象,只要修改了属性值,会发生UPDATE语句.
hibernate执行流程,不能从发送sql角度去理解,应该从对象状态方向去理解。...判断规则:
1): 对象是否有OID;———可以理解对象的Id,数据库中的主键id
2): 判断对象是否被Session所管理(在一级缓存中).
2.临时/瞬时状态
没有oid,没有被session...session中的方法仅仅是改变对象的状态,不发SQL:
3: 持久化对象的属性真正发生改变时,才会发生UPDAE语句.
----
发生SQL的时机:
默认情况下,在事务提交时,会自动去数据库同步这一次对象变化对应的...总结:由session的持久化方法修改对象的状态,
在同步session数据的时候(默认是提交事务,也可以是flush),
session再同步脏数据(一级缓存和一级快照中数据是否一致,不一致发送sql