在实体框架中,有一个名为AutoDetectChangesEnabled的选项,该选项可显著提高执行批量操作时的性能。
Hibernate 中是否有任何等效项,可以在选择/向数据库中插入许多记录时提高性能?或者也许问题应该是,真的需要这样吗?
有很多选项:
-
Session.setDefaultReadOnly()
- 看起来像是AutoDetectChangesEnabled
的直接等价物.但是,它仅禁用更改检测,但使会话缓存保持启用状态,因为其他功能需要它。因此,它只影响性能,而不影响内存消耗。 -
StatelessSession
- 没有会话缓存(根本不保留对实体的引用),因此缺少常规Session
的许多功能 -
解决此问题的另一种常见方法是在处理期间定期(例如,在每 100 个实体之后)
clear()
会话(或手动evict()
单个实体)。这种方法结合了以前选项的优点,因为它保留了Session
的正常语义,同时在不再需要实体时丢弃实体