在查询时,有时会出现一种“脏读”的现象,即你一次执行多条查询,但在查询过程中数据发生了修改。
比如说,你发送了两条SQL语句,完成部门和员工信息的检索,但在你检索出部门信息之后,有人更改了部门号这个数据,于是你可能一个员工都检索不出来。
不启动事务的查询,数据库的更新会反映在你的查询结果之内,导致检索结果不正确。
启动事务的查询,在查询结束之前,数据库的更新不会影响到你的查询结果。
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) 是一个只读事务,可以加快事务的处理速度。