栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

现象:spring boot jpa 取出数据后修改数据,不调用save方法,数据最终也会更新到数据库

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

现象:spring boot jpa 取出数据后修改数据,不调用save方法,数据最终也会更新到数据库

问题产生原因:使用JpaRepository find方法,获取到的是数据库的持久化对象,SpringDataJpa在事务完成的时候会自动持久化事务。
SpringDataJpa底层是利用hibernate实现的,可以参考hibernate的实体状态帮助理解。
hibernate实体状态

Hibernate实体状态的定义
1.瞬态:
一个实体通过new操作符创建后,没有和Hibernate的Session建立关系,也没有手动赋值过该实体的持久化标识(持久化标识可以认为是映射表的主键)。此时该实体中任何属性的更新都不会反映到数据库表中。

2.持久化:
当一个实体和Hibernate的Session创建了关系,并获取了持久化标识,而且在Hibernate的Session生命周期内存在。此时针对该实体任何属性的更改都会直接影响到数据库表中一条记录对应字段的更新,即与数据库表同步。

3.脱管:
当一个实体和Hibernate的Session创建了关系,并获取了持久化标识,而此时Hibernate的Session生命周期结束,实体的持久化标识没有被改动过。针对该实体任何属性的修改都不会及时反映到数据库表中。

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

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

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