我正在研究将完整文件夹内容读入数据库的JAX-RS Web应用程序。该文件夹中的文件可能很大(+ -100Mb)。 JAXB用于将xml解组到Java对象中。这些对象使用Hibernate持久化到数据库中。休眠事务对内存的影响
为了避免对内存的影响,我决定不将整个文件的内容保留在内存中,而是使用流处理单独处理每个对象。
另一个要求是该文件夹是事务处理的。因此,如果其中一个xmls发生错误,则整个文件夹内容将移动到错误文件夹,并且已添加到数据库的元素将被回滚。
现在我的问题是关于休眠的内存管理。由于真正的提交是在最后完成的(在使用实体管理器将所有元素持久化到数据库之后),hibernate是否保持数据在整个时间内真正地在内存中提交?如果是这样,我是否对文件夹中的文件流有任何优势,还是完全没用,因为所有元素在提交到数据库之前都由Spring事务保存在内存中?