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