吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 369|回复: 2
收起左侧

[求助] @Transactional 重复查引起的问题

[复制链接]
ppgjx 发表于 2024-8-23 22:59
[Asm] 纯文本查看 复制代码
 @Resource
    private 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 修改了Region  userEntity1 的值Region也被修改了 这是为啥呢 这个问题我还真的没遇见过
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

想找一个好名字 发表于 2024-8-23 23:42
如果是mybatis的话,一般一个线程访问数据库的时候查询都会做缓存的,就比如你第一个根据id查询user的sql,他就会把查询方法名以及传入的参数等作为key,数据库返回的数据作为value放入一个map并缓存。当你第二个相同的sql来查询的时候,他并不会直接去数据库查,而是在缓存中根据你的查询方法名和传入的参数去缓存中查,如果有就直接返回了。这样可以防止频繁获取数据库连接。这是mybatis的缓存机制,你可以了解下。如果是JPA的话应该还是有相同的机制吧
wzs1998 发表于 2024-8-23 23:43
看两个实例的id,都是12939,应该是userDao查询有缓存了,两次查询指向的同一个对象
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表