jpa自带的save,flush和saveandflush区别

各位大神:
save、flush和saveandflush似乎都能在数据库中更新数据,具体有什么区别,各自在什么情况下用呢

3个回答

一般来是需要flush的情况不多,设置AUTO时,jpa会自己决定什么时候flush。比如在更新数据之后,select时,数据库就会先flush一下.
https://stackoverflow.com/questions/32108491/what-is-exact-purpose-of-flush-in-jpa

引用链接里的例子,
1.Read a person Person p = em.find(Person.class, 234)
2.Update person p.setAge(31)
3.Read a building Building b = em.find(Building.class, 123
4.Read a building with JPQL query select b from Building b where b.id = 123

执行步骤2后,数据库中的对应的age并没有立刻变成31,之有在flush之后才会自动变成31(当然也可以在加上save(p)去更新数据库,其实这一步不需)
通常在4之前需要flush,跟新下数据库里的age。

save不会立刻提交到数据库,flush则立刻提交生效,save可能只是修改在内存中的

baidu_34073445
辰宇落彦 那saveandflush也是立即生效吗,save到内存后什么时候会提交到数据库呀。。
大约一年之前 回复
  • flush 立即生效,save保存
baidu_34073445
辰宇落彦 那立即生效也是直接保存到数据库吗
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JPA 中Flush()的理解
转:http://fsjohnhuang.blog.163.com/blog/static/1142963642009101735447743/     通过EntityManager的flush()可手动地控制将实体类中的数据传送到数据库, 但这句话意思十分含糊。具体地说应该是: 客户端对实体类中数据的改变和手写的任何SQL语句都是保存在客户端的内存中, 当执行了flush()后,对...
关于JPA save方法
用save方法 1、当添加的数据id为空时添加一条数据到数据库 2、当有id值时,修改数据库中的数据
JPA save新增问题
前台传递json,有关联表的情况下 { //主键 "pId" : 0, "platformId" : 0, "poNo" : "pono111", "requestNo" : "ro111", "buyerCompanyId" : "&q
getHibernateTemplate下的refresh与flush的区别?
如题
面试题:close()和flush()的区别?
对于字符流 一般写入的时候想要马上看到一般需要flush(), 面试题:close()和flush()的区别? A:close()关闭流对象,但是先刷新一次缓冲区,关闭之后,流对象不可以继续再使用了。 B:flush()仅仅是刷新缓冲区(一般写字符时要用,因为字符是先进入的缓冲区),流对象还可以继续使用
Hibernate commit() 和flush() 的区别
Hibernate commit() 和flush() 的区别rn孙卫琴<>p177 说,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush()方法,然后提交事务.提交事务意味着对数据库所做的更新会永久保持下来rnp148 所谓清理,是指Hibernate 按照持久化象的状态来同步更新数据库rnrn既然flush()已经同步更新数据库了,那也就意味着永久保存下来了,不解
面试题:close()和flush()的区别?
A:close()关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。 B:flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。 1字符 = 2字节 文件中数据存储的基本单位是字节。...
细说flush、ob_flush的区别
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑… 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_*系列函数, 是操作PHP本身的输出缓冲区. 所以, ob_flush是刷新PHP自身的缓冲区. 而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filte...
flush和close方法的区别
Flush() 刷新数据到目的地,流可以继续使用。 Close() 关闭流,关闭之前会刷新数据到目的地。关闭后,流不能继续使用。
jpa save获取id的问题
用户注册流程,生成用户信息和用户账号信息。 用户账号信息需要关联用户id。rn@Transactionalrnpublic User register(User user) rnrn User register=userDao.save(user);rn Account userAccount=new Account();rn userAccount.setUserId(register.getId());rn accountDao.save(userAccount);rn return register;rn rnrn保存用户后, register.getid()为null。rnrn----------------------------------------------------------rn其他相关代码如下:rn@Entityrnpublic class User implements Persistablern /**rn * rn */rn private static final long serialVersionUID = -5592190516312099866L;rn public User() rnrn rnrn /*rn * 主键rn */rn @Idrn @TableGeneratorrn private Long id;rnrn /*rn * 昵称rn */rn @Columnrn private String nickName = "";rnrn rn public Long getId() rn return id;rn rn public void setId(Long id) rn this.id = id;rn rn public String getNickName() rn return nickName;rn rn public void setNickName(String nickName) rn this.nickName = nickName;rn rnrnrn @Overridern public boolean isNew() rn // TODO Auto-generated method stubrn return id==null;rn rn rnrnrnpublic interface UserDao extends PagingAndSortingRepository rnrnrn在线等在回复.。。。。rnrn请解决问题,不要说让 user 作为userAccount一个属性,交给jpa自己处理。我是要研究这个问题。
JPA @Query更新 和自带方法save()同时使用出现save失效问题
如果将@Modifying(clearAutomatically = true),clearAutomatically为true,则save方法必须放在所有@Query方法后面
jpa自带插入数据
jpa自带插入数据,id自增设置但出现了覆盖后id不自增。对象new在for循环外部,移到for循环内部就好了
Save,Create 方法的区别
问题背景: 在写TDD的时候,我测试一个检查报名上限的方法,就是对一个报名信息在它插入数据库前,检查它是否到达报名限制, 然后在测试的时候要预先对数据库进行插值, 所有我用了一个for循环对一条数据进行重复插值: $join=new Join();//报名信息的实例对象 $join=[ 'XH'=&amp;amp;amp;gt;0, ...
export与save的区别(简洁明了)
导出(export) Export命令用于持久化容器(不是镜像) 用法:docker export [OPTIONS] CONTAINER 保存(save) Save命令用于持久化镜像(不是容器) 用法:Usage: docker save [OPTIONS] IMAGE [IMAGE...] 需要更详细的了解,请参考:http://blog.csdn.net/ling
spring boot jpa的saveAndFlush更新或者插入实体的返回标志
spring boot jpa的saveAndFlush更新或者插入实体的返回结果判断 @Repository public interface UserDao extends JpaRepository&amp;lt;User,Long&amp;gt; { } @Service public class TestService { @Autowired UserDao userDao; ...
springboot jpa save时不能创建表,save失败
执行: insert into user (ctime, pwd, qid, right, temp, uname, validity) values (?, ?, ?, ?, ?, ?, ?) 爆出异常:  You have an error in your SQL syntax; check the manual that corresponds to your MySQL serve
字符流中Close()和flush()的区别
字符流中Close()和flush()的区别
BufferedWriter和FileWriter的flush方法的区别?
这两个类的flush()方法有啥区别呢?rnFileWriter fw = new FileWriter("result_all.csv");rnBufferedWriter bw = new BufferedWriter(fw);rn我在写文件的时候应该调用fw.flush();还是bw.flush();?
Scheduled执行jpa的save方法的问题。
定时任务Scheduled执行springdata jpa的save方法不保存。
关于spring jpa save更新的操作
现有一个entity如下 [code=&quot;java&quot;]@Entity @Table(name = &quot;t_pcstatus&quot;) public class PCStatusEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int statusId; private int...
spring data jpa save方法失效
使用spring data jpa 保存方法 save rn保存失败,出现的sql语句是selectrn一定得用saveAndFlush才能保存成功rn请问这是什么原因?rn[code=java]rnrnpublic void StockInOut(List bdStockIns, List bdStockOuts, Integer blFlag)rn if(bdStockIns!=null&&bdStockIns.size()>0)rn bdStockInDao.save(bdStockIns);//保存入库记录rn for(BdStockIn bdStockIn : bdStockIns)rn bdLibDao.updateFlag(bdStockIn.getBsiBsSn(), blFlag);rn rn rn if(bdStockOuts!=null&&bdStockOuts.size()>0)//保存出库记录rn //bdStockOutDao.save(bdStockOuts);rn for(BdStockOut bdStockOut : bdStockOuts)rn bdStockOutDao.save(bdStockOut);rn //bdStockOutDao.delete(bdStockOut);rn //bdStockOutDao.saveAndFlush(bdStockOut);rn bdLibDao.updateFlag(bdStockOut.getBsoBsSn(), blFlag);rn rn rn rnrnrnrnpackage com.hopebridge.bloodlibrary.dal.business;rnrnimport java.util.List;rnrnimport org.springframework.data.jpa.repository.JpaRepository;rnimport org.springframework.data.jpa.repository.Modifying;rnimport org.springframework.data.jpa.repository.Query;rnimport org.springframework.stereotype.Repository;rnrnimport com.hopebridge.POJO.blood.business.BdStockOut;rnimport com.hopebridge.POJO.blood.business.BdStockOutId;rnimport com.hopebridge.bloodlibrary.commonfunction.persistence.BaseDaoImpl;rnimport com.hopebridge.framework.persistence.BaseDao;rnrn/**rn * spring data jpa DAOrn * @author businessrn * @version 2014-05-14rn */rnpublic interface BdStockOutDao extends BdStockOutDaoCustom,JpaRepository rnrn @Query("from BdStockOut order by bsoVouno")rn public List findAllList();rn rn @Query("from BdStockOut where bsoBsSn=?1 order by bsoDate")rn public List findByBlBdNo(Long bsoBsSn);rn rn @Modifyingrn @Query("delete BdStockOut as b where b.bsoBsSn=?1")rn public void deleteByBlBdNo(Long bsiBsSn);rnrn/**rn * DAO自定义接口rn * **/rninterface BdStockOutDaoCustom extends BaseDao rnrnrnrn/**rn * DAO自定义接口实现类rn *rn **/rn@Repositoryrnclass BdStockOutDaoImpl extends BaseDaoImpl implements BdStockOutDaoCustom rnrn[/code]
问一个关于JPA的save的问题
[img=https://img-bbs.csdn.net/upload/201605/19/1463630075_90759.png][/img]rnrn这里是这样的,首先保存一条数据到response表rn然后把这条新增的response的id更新到article表里面rnrn这个要怎么实现呢rnrn第一步保存的save能不能返回一个id出来?rnrn初次使用,并不是很了解
面试之jpa和mybatis的区别
第一、jpa是对象与对象之间的映射,而mybatis是对象和结果集的映射。 第二、jpa移植性比较好,不用关心用什么数据库,因为mybatis自由写sql语句,所以当项目移植的时候还需要改sql。(及时判断数据库类型,不嫌累么)。 第三、当需要修改字段的时候mybatis改起来特别费事,而jpa就相对简单。 第四、如果用hibernate学习起来比较费时间,而mybatis相对来说比较简单,
JDBC和JPA的区别
1.JDBC提供一种接口,它是由各种数据库厂商提供类和接口组成的数据库驱动,为多种数据库提供统一访问。我们使用数据库时只需要调用JDBC接口就行了。 JDBC的用途:与数据库建立连接、发送 操作数据库的语句并处理结果。 常见数据库:Oracle、MySQL等。 2.JPA是Java持久层API。它是对java应用程序访问ORM(对象关系映射)框架的规范。为了我们能用相同的方法使用各种OR...
hibernate和JPA区别
各位好!rn黎活明老师讲的巴巴运动网大家不知道了解不?最近我在看这个视频。黎老师是用struts+spring+JPA来进行开发的。rn其中有一个抽象类DaoSupport用到了比较精巧的方式就是以后所有的DaoImpl都不需要写实体的处理方法,只需要继承DaoSupport,并指明这个T的具体类型就可以了。我想用hibernate来实现,可思考了会,感觉实现不了。不知道大家有没有建议。rnrnDaoSupport的代码如下:rn[code=Java]package cn.itcast.service.base;rnrnimport java.io.Serializable;rnrnimport javax.persistence.Entity;rnimport javax.persistence.EntityManager;rnimport javax.persistence.PersistenceContext;rnrnimport org.springframework.transaction.annotation.Propagation;rnimport org.springframework.transaction.annotation.Transactional;rnrnimport cn.itcast.utils.GenericsUtils;rnrn@SuppressWarnings("unchecked")rn@Transactionalrnpublic abstract class DaoSupport implements DAO rn @PersistenceContext protected EntityManager em;rn /* 实体类 */rn protected Class entityClass = GenericsUtils.getSuperClassGenricType(getClass());rn rn public void delete(Serializable entityid) rn em.remove(em.getReference(entityClass, entityid));rn rnrn @Transactional(propagation=Propagation.NOT_SUPPORTED)rn public T find(Serializable entityid) rn return em.find(entityClass, entityid);rn rn rn @Transactional(propagation=Propagation.NOT_SUPPORTED)rn public long getCount() rn return (Long)em.createQuery("select count(o) from " + getEntityName(this.entityClass) + " o").getSingleResult();rn rn /**rn * 获取实体名称rn * @returnrn */rn protected static String getEntityName(Class entityClass)rn String entityName = entityClass.getSimpleName();rn Entity entity = entityClass.getAnnotation(Entity.class);rn if(entity.name()!=null && !"".equals(entity.name())) entityName = entity.name();rn return entityName;rn rnrn public void save(T entity) rn em.persist(entity);rn rnrn public void update(T entity) rn em.merge(entity);rn rnrnrn[/code]
JPA: flus()和getTransaction()的区别
本人刚开始接触java, 对JPA 也不清楚, 看到别人写的一些代码,将实体中的数据更新到数据库时,有些时候用 em.flus() 这个方法,有些时候用 em.getTransaction() 方法。rn 想请教下 这两种处理有什么 具体的区别? 多谢!
hibernate中save和merg的区别
请问下save是局部更新还是merge是局部更新
canvas中 save()和saveLayer()区别
canvas中 save()和saveLayer()区别这两天了解学习绘制相关的知识,对于save和saveLayer的不同之处网上没有找到很好的解释,可能是自己理解力的问题。这里重新自己梳理了下。 相同点 saveLayer可以实现save所能实现的功能 不同点 1,saveLaye生成一个独立的图层而save只是保存了一下当时画布的状态类似于一个还原点(本来就是)。 2,saveLaye
请 Hibernate高手 来看看 关于save()与flush()的疑惑
孙卫琴 <>一书中对Session的save()方法有如下说明:rn"save()方法并不立即执行SQL insert语句. 只有当Session清理缓存时才会执行SQL insert语句."rnrn那么试问, 如下代码为何正常执行?rnrn//将session清理缓存模式改为never, 也就是在commit时, 不清理缓存, 既然没清理缓存那么为什么SQL insert执行成功了呢?rnSession sessin = SessionFactory.getSession();rnTransaction tx = session.beginTransaction();rnsession.setFlushMode(FlushMode.NEVER);rnUser user = new User();rnsession.save(user);rntx.commit();rnsession.close();rnrn
当session save一个对象还没有flush清理缓存 时候
session里面好像不止一份刚才保持的实体对象是吗,当清理了缓存的时候,session 不是还跟实体对象保持同步吗
Save(User user)and Save(DataSet ds)这样有区别么?
public class User : BaseObjectrn rn //类似这样的方法rn public String getUserName() rn return UserName;rn rn rn public void setUserName(string newUserName) rn this.UserName = newUserName;rn rnrnrn
qfile的flush函数与linux系统的sync区别?
使用qt在linux上开发对外接存储设备的读写程序,但如果不使用文件同步,可能在拔掉外设时实际数据并未同步到外设存储设备上,听说用sync,但又听说sync并不是在同步完成才返回,所以也可以不保险,不知qt的flush函数是否可以,是否是在刷入数据后才返回,保证了数据完整
java:IO流(flush和close方法的区别)
* flush()方法     * 用来刷新缓冲区的,刷新后可以再次写出  * close()方法     * 用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出 ...
IO流(4)--Flush()和Close()方法的区别
Flush()和Close()的方法的区别 Close()方法 * 具备刷新的功能,在关闭流之前,就会先刷新缓冲区,将缓冲区的字节全部刷新到文件上,在关闭流。 flush()方法 * 可以刷新,并且刷新之后可以继续写,而close刷新之后就不能继续写了。 package com.fenqing
IO流中flush()和close()方法的区别
IO流笔记: flush()方法 -----刷新该流的缓冲区,但并没有关闭该流,刷新之后还可以继续使用该流对象进行数据操作。 close()方法 -----关闭此流,并在关闭之前先刷新该流,关闭之后流对象不可再被使用。 怎么合理使用方法 ------一般情况下可以直接使用close()方法直接关闭该流,但是当数据量比较大的时候,可以使用flush()方法
Java_基础—flush和close方法的区别
package com.soar.stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutp...
IO流中flush、close的区别和换行
flush()和close()  在IO中,如果只write()不flush()或者close()时,是不会写到创建的输出流对象中的,那么我们就要明白flush()和close()的区别 A:close()关闭流对象,但是先刷新一次缓冲区,关闭之后,流对象不可以继续再使用了。 B:flush()仅仅是刷新缓冲区(一般写字符时要用,因为字符是先进入的缓冲区),流对象还可以继续使用   那既然cl...
IO流初学flush和close的区别
import java.io.*; public class FileWriterDemo1 { /** * @param args */ public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub //创建一个FileWriter对象,该对象一被初
jpa的hibernate.ddl-auto的几个属性值区别
jpa是一种规范,但是对jpa支持最好的就是hibernate,所以一般来说jpa指的就是hibernate实现的jpa。 在使用springboot时,使用jpa,加上jpa的起步依赖spring-boot-starter-data-jpa即可。 在配置文件中除了配置数据源以外,还可以配置一些方便开发使用的选项,如spring.jpa.show-sql=true,这个属性可以在操作数据库时显...
JPA、Hibernate和Mybatis区别和总结
一、应用场合: 传统公司、部分个人开发者喜欢用jpa;而互联网公司更青睐于mybatis 原因: 1、mybatis更加灵活,开发迭代模式决定了他是互联网公司的首先;每一次的修改不会带来性能上的下降。 2、传统公司需求迭代速度慢、项目改动小,hibernate可以做到一劳永逸;hibernate容易因为添加关联关系或者开发者不了解优化导致项目,造成越改越糟糕。 二、各自特点: 1、my...
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制