我正在为我的 Web 应用程序使用 Spring MVC、Hibernate。我正在使用 Apache POI 从 excel 加载数据。我能够成功加载数据,但我认为我的方法在性能和内存方面效率不高。我正在解释我正在做的事情以及我认为会提高性能的事情。
- 使用 POI 我正在阅读工作表,然后 Read 迭代每一行,然后迭代列。
在这个单行迭代期间,我创建了一个 DTO 并将其传输到提供事务的服务并调用 DAO 层(基本上调用 save() 方法)。如果数据已经存在或无效,则抛出异常,我知道哪个 Excel 行的数据有问题。它也有点像数据验证。
然后我迭代另一行并再次执行第 2 步。
这就是为什么我认为我的方法是错误的,我希望你提出建议,如果是对还是错。
我没有一次读取excel中的所有数据,而是在每一行上调用服务和DAO,这浪费了在方法之间切换的时间。
由于数据是保存在数据库中而不做修改,所以应该直接加载到数据库中,而不是先创建对象,然后保存持久化。我不做批量和批量操作。
这是我认为我应该做的:
- 首先从excel中获取所有数据并将其存储在某个集合中。
- 然后我将迭代集合,在迭代期间,我将使用该对象向 HQL 提供数据并执行查询。
- 这是在一个事务中执行许多插入查询的正确方法吗?
当我提交事务时,所有查询是否都执行或与数据库同步?如果是,那么持久性上下文不会很大吗?
这是否确认休眠中的批量操作?
你说什么伙计们?你的建议请。