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