休眠 - 如何返回未按会话跟踪的对象



在实体框架中,有一个名为AutoDetectChangesEnabled的选项,该选项可显著提高执行批量操作时的性能。

Hibernate 中是否有任何等效项,可以在选择/向数据库中插入许多记录时提高性能?或者也许问题应该是,真的需要这样吗?

有很多选项:

  • Session.setDefaultReadOnly() - 看起来像是AutoDetectChangesEnabled的直接等价物.但是,它仅禁用更改检测,但使会话缓存保持启用状态,因为其他功能需要它。因此,它只影响性能,而不影响内存消耗。

  • StatelessSession - 没有会话缓存(根本不保留对实体的引用),因此缺少常规Session的许多功能

  • 解决此问题的另一种常见方法是在处理期间定期(例如,在每 100 个实体之后)clear()会话(或手动evict()单个实体)。这种方法结合了以前选项的优点,因为它保留了Session的正常语义,同时在不再需要实体时丢弃实体

最新更新