hibernate中,调用session的save、delete、update方法后只是缓存到session里,应该什么时候使用transection的commit方法与数据库数据同步?如果每次调用sava、delete等方法提交一次,好像违背了hibernate的初衷,性能不好。但在网站开发时,添加一个用户信息、更新、或删除时,这些操作是要及时与数据库同步的。我的问题就是应在什么时候把数据提交到数据库。
这就得根据你的业务需求来确定事务的边界,例如添加用户信息,添加完成以后就得commit,而不是继续操作等着更新或者其他操作以后才commit,
这和性能无关,得和你的业务逻辑来确定事务的边界
如果你没有集成spring,则需要自己确定事务,事务完成之后手动提交。如果你集成了spring,配置事务后,每次事务会自己提交,即不用手动commit,而且当抛出RuntimeException的时候事务会自己回滚。
session.flush();
trans.commit();
就可以发出sql,将数据插入到数据库
数据库操作是放在事务内进行.
先开启事务-->对数据进行删除,增加等操作。执行到这步数据是放在缓存里,数据未提交到数据库-->事务提交。这步执行后数据同步到数据库。如果出现异常应进行事务回滚。