栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring-Hibernate持久化不会导致插入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring-Hibernate持久化不会导致插入

之所以这样工作是因为您使用标记了事务为只读

@Transactional(readonly = true)

如您所见,由于您仍然可以通过

flush()
手动调用保留更改,因此它不会使您的事务实际上是只读的。但是,它在事务结束时禁用自动刷新,因此,如果没有手动刷新,更改将不会持久。

您需要

readOnly
从类级别的注释中删除,或在具有方法级别的注释的非只读方法上覆盖它:

@Override@Transactional(readonly = false)public boolean save(User user) { ... }

还要注意,事务划分通常应用于服务层方法,而不是DAO方法。特别是,在编写DAO方法时,您实际上并不知道哪些事务应该是只读的,哪些不是只读的。如以下示例所示,此信息仅在设计服务层时可用:

public class UserService {    @Autowired UserDAO dao;    @Transactional(readonly = true)     public User getUserById(int id) {        return dao.getById(id); // getById() can participate in effectively read-only transaction    }    @Transactional    public void changeUserName(int id, String newName) {        User u = dao.getById(id); // Or not        u.setName(newName); // Change will be flushed at the end of transaction    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447803.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号