Java 从excel进行Hibernate批量加载:设计建议或提高性能的方法
我的Web应用程序使用Spring MVC和Hibernate。我使用Apache POI从excel加载数据。我成功地加载了数据,但我认为我的方法在性能和内存方面效率不高。 我正在解释我现在正在做什么,以及我认为什么会提高绩效Java 从excel进行Hibernate批量加载:设计建议或提高性能的方法,java,spring,excel,hibernate,spring-mvc,Java,Spring,Excel,Hibernate,Spring Mvc,我的Web应用程序使用Spring MVC和Hibernate。我使用Apache POI从excel加载数据。我成功地加载了数据,但我认为我的方法在性能和内存方面效率不高。 我正在解释我现在正在做什么,以及我认为什么会提高绩效 我使用POI读取工作表,然后读取迭代每行,然后迭代列 在这一单行迭代过程中,我创建了一个DTO,并将其传输到提供转换和调用DAO层(基本上调用save()方法)的服务。如果数据已经存在或无效,则抛出异常,我知道哪个Excel行在数据中有问题。 这有点像数据验证 然后我迭
伙计们,你们怎么说?请给出你们的建议。你们当前的实施方式是正确的。需要进行的一个更改是在单个事务中合并一组行,而不是在单独的事务中更新/插入每一行。通过这种方式,hibernate将使用jdbc批更新/插入来减少数据库往返次数 如果行的总数可能很大,那么您应该将其分解为多个事务,或者使用定期刷新&清除-以便将持久性上下文中的对象推送到数据库,并且这些对象可以进行垃圾收集 将所有数据加载到内存中并进行处理不是一个好主意。如果数据集的大小很大,您将遇到内存不足的问题 hibernate参考中的这一部分提供了更多详细信息和其他选项。