Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA在play Framework1.x中大约保存(刷新)中的使用

JPA在play Framework1.x中大约保存(刷新)中的使用
EN

Stack Overflow用户
提问于 2013-10-12 08:53:52
回答 1查看 805关注 0票数 2

我知道em.flush()所做的是清空内部的SQL指令缓存,并立即将其执行到数据库。Correct use of flush() in JPA/Hibernate

但是,当我使用JPA em.flush()将sql导出到数据库时,我发现sql不能立即执行到数据库中。在执行当前操作之前,我无法在数据库中找到数据。

游戏框架中的示例:

代码语言:javascript
运行
AI代码解释
复制
em=JPA.em();
Transaction tx=em.getTransaction();
tx.begin();  
em.persist(customer);  
em.flush();  
em.persist(address);  
tx.commit(); 

当我遍历em.flush()时,我在em.flush()行设置了一个断点;

然后,我找不到数据库中的合作伙伴数据。

如果我省略了em.flush();当当前的事务是commited.So时,数据也会进入数据库,那么em.flush()有什么用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-12 20:34:15

实体管理器刷新操作将sql发送到数据库,但请记住,当事务正在处理时,通过sql发送到数据库的数据只有在数据库被告知提交时才会持久化。

这是事务期间的一般数据库行为,您可以使用事务设置数据库操作为原子的边界。

即使使用普通jdbc而不是任何orm,您也会看到这种行为,当然,除非为发送的每个sql查询启用了自动提交。在引擎盖下,orm也使用jdbc。因此,对于单个资源事务(例如,单个数据库),通常的成语是首先在jdbc连接上设置autoCommit false,然后通过SQL发送多个插入/更新,然后调用提交连接。如果报告了一些异常,则调用回滚。因此,只有在将提交的最后调用发送到数据库时,数据才会持久化。

更新

您需要理解,没有活动事务的刷新()是行不通的。此外,还有一个叫做FlushMode的东西,它实际上控制着什么时候会发生刷新,您可以看看答案here。理解所有这些的关键是,以insert/updates的形式发送到数据库的数据不会立即使其持久,除非事务已提交,但相同的事务可以访问更改的数据(已更改但未持久化).On数据库端,您可以将其可视化为每个事务的单独区域,其中每个事务可以更改其本身内的数据,但最终进入基础表的数据只有在事务被告知提交后才会这样做。在运行查询之前,提供者还会隐式地调用刷新,查询的结果可能会受到持久上下文状态的影响。例如,如果加载一个实体,然后更改其属性,然后对该实体运行查询,则提供者将看到必须首先将更改发送到其事务处理中的数据库,然后查询该实体,以便加载的属性反映已更改的属性。但是,在事务提交之前,更改后的数据不会持久化到实际的表行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19336760

复制
相关文章
SpringBoot中JPA的基本使用
JPA(Java Persistence API)是Java的持久化API,用于对象的持久化。它是一个非常强大的ORM持久化的解决方案,免去了使用JDBCTemplate 开发的编写脚本工作。JPA通过简单约定好接口方法的规则自动生成相应的 JPQL 语句,然后映射成 POJO 对象。
砒霜拌辣椒
2023/08/23
1.4K0
SpringBoot中JPA的基本使用
Spring Boot JPA 中transaction的使用
transaction是我们在做数据库操作的时候不能回避的一个话题,通过transaction,我们可以保证数据库操作的原子性,一致性,隔离性和持久性。
程序那些事
2020/07/08
2.3K0
Spring Boot JPA中关联表的使用
本文中,我们会将会通过一个Book和Category的关联关系,来讲解如何在JPA中使用。
程序那些事
2020/07/08
2.2K0
使用JPA中@Query 注解实现update 操作
使用JPA中@Query 注解实现update 操作,代码如下: @Transactional @Modifying(clearAutomatically = true) @Query(value =
hbbliyong
2018/03/06
1.3K0
使用JPA中@Query 注解实现update 操作
spring使用jpa进行update操作主要有两种方式: 1、调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.save(Iterable<T> entities) 3)保存并立即刷新一个实体:repository.saveAndFlush(T entity) 注:若是更改,entity中必须设置了主键字段,不然不能对应上数据库中的记录,变成新增(数据库自动生成主键)或报错(数据库不自动生成主键)了 2、@Query注解,自己
hbbliyong
2018/03/06
2.3K0
JPA 中 sql 预编译 -- EntityManager 使用 预编译
实现方式 : 1. 注入em: @PersistenceContext private EntityManager entityManager; 注入方式 2: @PersistenceUnit private EntityManagerFactory emf; 2. 得到em: private EntityManager getEm() { return this.entityManager; } 对应第2种注入方式: /** * 得EntityM
微风-- 轻许--
2022/04/13
7550
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
首先 , 创建 Intent , 设置其 Action 为 “android.intent.action.VIEW” ,
韩曙亮
2023/03/30
6.3K0
ExtJS中的全局变量的保存和使用
前阵子研究ExtJS,对于如何在Sencha Architect软件中使用全局变量伤透了脑筋。现在我一共发现了两种:
提莫队长
2019/03/01
2.4K0
ExtJS中的全局变量的保存和使用
JPA实体类中的注解
@Entity   标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应,如果是逆向生成表的话就会以简单类名作为表名   如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表; @Id   标注于属性上,通常是在get方法上,也可以在属性的声明上。   用于表示该属性作为ID主键 @GeneratedValue
二十三年蝉
2018/03/29
4.1K0
工作流中的数据持久化详解!Activiti框架中JPA的使用分析
上面的例子展示了JPA结合Spring和参数化方法表达式的强大优势 :所有的流程就不需要自定义java代码(Spring bean除外),大幅度的加快了流程部署
攻城狮Chova
2022/01/22
1.9K0
工作流中的数据持久化详解!Activiti框架中JPA的使用分析
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
数据猿
2018/04/25
1.1K0
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
javascript中的后退和刷新
<input type=button value=刷新 onclick=”window.location.reload()”> <input type=button value=前进 onclick=”window.history.go(1)”> <input type=button value=后退 onclick=”window.history.go(-1)”> <input type=button value=前进 onclick=”window.history.forward()”> <input type=button value=后退 onclick=”window.history.back()”> 后退+刷新<input type=button value=后退 onclick=”window.history.go(-1);window.location.reload()”>在C# Web程序中,如为页面按钮写返回上一页代码
全栈程序员站长
2022/09/06
9510
spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用spring data jpa @Query注解中delete语句报错
spring data jpa @Query注解中delete语句报错 项目中需要删除掉表中的一些数据 @Query("delete from EngineerServices es where es
一个会写诗的程序员
2018/08/17
2.1K0
Sequence在Oracle中的使用
  Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。
庞小明
2018/08/01
5.5K0
Transformer 在RxJava中的使用
Transformer,顾名思义是转换器的意思。早在 RxJava1.x 版本就有了Observable.Transformer、Single.Transformer和Completable.Transformer,在2.x版本中变成了ObservableTransformer、SingleTransformer、CompletableTransformer、FlowableTransformer和MaybeTransformer。其中,FlowableTransformer和MaybeTransformer是新增的。由于 RxJava2 将Observable拆分成 Observable 和 Flowable,所以多了一个FlowableTransformer。同时,Maybe是 RxJava2 新增的一个类型,所以多了MaybeTransformer。
fengzhizi715
2018/08/24
8K0
Transformer 在RxJava中的使用
iptables在centos中的使用
yum install -y iptables && yum install -y iptables-services
93年的老男孩
2019/12/18
11.2K0
XML 在SQLServer中的使用
SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters。当你用XML数据类型配置这些对象中的一个时,你指定类型的名字就像你在SQLServer 中指定一个类型一样。 XML的数据类型确保了你的XML数据被完好的构建保存,同时也符合ISO的标准。在定义一个XML数据类型之前,我们首先要知道它的几种限制,如下: 一个实例的XML列不能包含超过2GB的数据。 一个XML的列不能是索引
用户1217611
2018/01/30
7.9K0
Dotenv在nestjs中的使用
Dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中。
挥刀北上
2021/12/20
17.2K1
Dotenv在nestjs中的使用
PageHelper在springboot中的使用
使用PageHelper.startPage 静态方法调用startPage : 特点:
知识浅谈
2021/03/03
4.1K0
点击加载更多

相似问题

在Play Framework1.x/ JPA中使用" in“构建查询有更简单的方法吗?

15

使用Play Framework1.x,如何让JPA在生产模式下创建缺少的DB表?

11

Play Framework1.x webfonts CORs问题

17

JPA在刷新之前保存瞬态实例

11

使用@AllowFeature方法的Play Framework1.x函数测试

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档