2012-03-06 20 views
0

我一直在嘗試使用Hibernate一段時間。我喜歡hibernate,它有註釋映射能力(比如@Entity,@Column)有沒有像Hibernate這樣的框架,但沒有緩存,並且直接執行SQL?

但是我不喜歡它緩存的想法(How to disable hibernate caching也說它也不能禁用)。

此外,當插入/刪除/更新數據庫中的某些數據時,我完全不喜歡它的'提交vs flush'想法,它不直接將SQL運行到數據庫。

因此,作爲我的標題,是否有任何框架像Hibernate註釋但沒有緩存,並直接執行SQL?如果這樣的框架可以在Spring中使用,那將會很好。或者,實際上,Hibernate可以只是禁用緩存,或者只是有一些配置可以爲每個插入/刪除/更新直接執行SQL?

回答

2

這些功能在默認情況下處於開啓狀態,因爲您通常需要它們(即使您最初沒有意識到)。

但如果你真的要禁用緩存,並立即沖洗一切:

  • 使用sessionFactory.openStatelessSession() - 本次會議不存儲在1級高速緩存任何東西(和2級高速緩存默認是關閉的)。請注意,您無法使用此會話操作集合映射。
  • 使用session.setFlushMode(..)將其設置爲在非常查詢(而不鼓勵)之前自動刷新。

請注意,刷新模式僅適用於有狀態會話 - 無狀態會話立即刷新。

+0

感謝您的答案,讓我試試這個。 – 2012-03-06 21:02:08

+0

如何在spring-servlet.xml/hibernate.cfg.xml中配置使用openStatelessSession? – 2012-03-10 11:14:26

+0

不應該有任何不同 - 你仍然可以注入SessionFactory並獲得會話到 – Bozho 2012-03-10 16:08:47

1

你可能會尋找MyBatis,這是更直接一點。對於基於註釋的示例,see here雖然還有其他的。如果你使用Spring,你也可以使用純JDBC,或者通過Spring。

我不明白「不喜歡的緩存」的東西。

+0

感謝您的回答。無論如何,你的意思是你不懂這句話「我不喜歡它緩存想法......」?這意味着我不希望Hibernate使用任何緩存。 – 2012-03-06 21:01:17

+0

@SurasinTancharoen我明白你的意思,我只是沒有任何想法*爲什麼有人會認爲緩存不是一個好主意。 – 2012-03-06 22:04:02

相關問題