根据我的理解,JPA的entitymanager的flush()方法将在单个数据库网络调用中将持久性上下文中的可用数据与数据库同步。因此,当有人尝试保留大量记录时,它避免了多个数据库调用。为什么不能将其视为JDBC批处理插入的等效批处理(我知道不可以为此目的实现flush())?因为JDBC批处理插入还具有相同的想法,即对添加到语句对象的所有语句仅进行单个DB调用。
[从性能角度来看,两者是可比的?他们使用相同的技术吗?在内部,在数据库端,两者都会生成相同数量的查询?
有人请让我理解其中的区别。
entitymanager将在单个数据库网络调用中将持久性上下文中的可用数据与数据库同步
不,完全没有。那是不可能的。刷新可能会从多个表中删除,插入多个表中并更新多个表。不能在单个网络呼叫中完成。
刷新can使用批处理语句来执行多个类似的插入或更新。