2010-04-23 79 views
0

如果我正在做的是批量插入,Hibernate是否使用緩存(第二級或其他)? 沒有從數據庫中請求實體,也沒有使用生成器。 另外,StatelessSession vs Session會改變答案嗎?如果我正在使用JDBC批量大小爲50的Session,該怎麼辦?我將使用的緩存是Ehcache基本休眠緩存問題

回答

2

Doe Hibernate使用緩存(第二級別或其他)如果我所做的是批量插入?

在L1緩存(會話級緩存),他們被刷新到數據庫之前緩存新插入的實體實例(請參見13. Batch processing),因此需要flushclear會話定期防止OOM。

此外,StatelessSession vs Session會改變答案嗎?

是的。如13.3. The StatelessSession interfaceA StatelessSession中所述,沒有與其關聯的持久性上下文,並且不提供許多更高級別的生命週期語義。尤其是,無狀態會話不會實現一級緩存,也不會與任何二級或查詢緩存進行交互。

如果我使用JDBC批處理大小爲50的會話該怎麼辦?

這只是表示您應該flush/clear該會話每50個插入。