Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是JPA';s flush和JDBC批处理在内部的工作方式是否相同?_Jpa_Jdbc - Fatal编程技术网

是JPA';s flush和JDBC批处理在内部的工作方式是否相同?

是JPA';s flush和JDBC批处理在内部的工作方式是否相同?,jpa,jdbc,Jpa,Jdbc,据我所知,JPA的entitymanager的flush()方法将在一次DB网络调用中将持久性上下文中可用的数据与数据库同步。因此,当有人试图保存大量记录时,它避免了多个DB调用。为什么我不能把它看作是JDBC批处理插入的一个批处理等价物(我知道FrHuSH)?因为,JDBC批插入的工作原理也是一样的,它只对添加到语句对象中的所有语句进行一次DB调用 从性能角度看,两者是否具有可比性?他们使用相同的技术工作吗?在内部,在数据库端,两者将生成相同数量的查询 有人请让我明白其中的区别 entitym

据我所知,JPA的entitymanager的flush()方法将在一次DB网络调用中将持久性上下文中可用的数据与数据库同步。因此,当有人试图保存大量记录时,它避免了多个DB调用。为什么我不能把它看作是JDBC批处理插入的一个批处理等价物(我知道FrHuSH)?因为,JDBC批插入的工作原理也是一样的,它只对添加到语句对象中的所有语句进行一次DB调用

从性能角度看,两者是否具有可比性?他们使用相同的技术工作吗?在内部,在数据库端,两者将生成相同数量的查询

有人请让我明白其中的区别

entitymanager将在一次DB网络调用中将持久性上下文中可用的数据与数据库同步

不,一点也不。这是不可能的。刷新可能会从多个表中删除、插入多个表并更新多个表。这不可能在一次网络呼叫中完成


不过,flush可以使用批处理语句执行多个类似的插入或更新

我知道所有其他挂起的操作将在刷新执行时同步。我只想知道在大容量插入到同一个表的上下文中。JDBCbatch和JPA的flush使用相同的策略工作,JPA的flush也可以像批插入一样工作(即单DB调用或多DB调用)?在性能方面是否存在巨大差异?如果您已将JPA引擎配置为使用批处理语句,则刷新将使用批处理语句,如果JPA引擎的默认配置为使用批处理语句,则刷新将使用批处理语句。