@Transactional 重复查引起的问题
@Resourceprivate UserDao userDao;
@RequestMapping(value = "/test", method = RequestMethod.GET)
@ApiOperation(value = "分页带条件查询所有数据")
@Transactional
public void get() {
UserEntity userEntity = userDao.selectById("02d95ea366894d5094bc4d982196c2d8");
userEntity.setRegion("11232");
UserEntity userEntity1 = userDao.selectById("02d95ea366894d5094bc4d982196c2d8");
userEntity1.setUserPhone("123");
userDao.updateById(userEntity1);
}
参考以上代码
在加了@Transactional 情况下userEntity 修改了RegionuserEntity1 的值Region也被修改了 这是为啥呢 这个问题我还真的没遇见过
如果是mybatis的话,一般一个线程访问数据库的时候查询都会做缓存的,就比如你第一个根据id查询user的sql,他就会把查询方法名以及传入的参数等作为key,数据库返回的数据作为value放入一个map并缓存。当你第二个相同的sql来查询的时候,他并不会直接去数据库查,而是在缓存中根据你的查询方法名和传入的参数去缓存中查,如果有就直接返回了。这样可以防止频繁获取数据库连接。这是mybatis的缓存机制,你可以了解下。如果是JPA的话应该还是有相同的机制吧 看两个实例的id,都是12939,应该是userDao查询有缓存了,两次查询指向的同一个对象
页:
[1]