簡單概括Hibernate批量操作
Hibernate還是比較常用的,于是我研究了一下Hibernate批量操作,在這里拿出來和大家分享一下,希望對大家有用。
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate批量操作
即使是使用JDBC,在進行大批數據更新時,BATCH與不使用BATCH有效率上也有很大的差別。我們可以通過設置batch_size來讓其支持批量操作。
舉個例子,要批量刪除某表中的對象,如“delete Account”,打出來的語句,會發(fā)現Hibernate找出了所有ACCOUNT的ID,再進行刪除,這主要是為了維護二級緩存,這樣效率肯定高不了,在后續(xù)的版本中增加了bulk delete/update,但這也無法解決緩存的維護問題。也就是說,由于有了二級緩存的維護問題,Hibernate批量操作效率并不盡如人意!
從前面許多要點可以看出,很多時候我們是在效率與安全/準確性上找一個平衡點,無論如何,優(yōu)化都不是一個純技術的問題,你應該對你的應用和業(yè)務特征有足夠的了解,一般的,優(yōu)化方案應在架構設計期就基本確定,否則可能導致沒必要的返工,致使項目延期,而作為架構師和項目經理,還要面對開發(fā)人員可能的抱怨,必竟,我們對用戶需求更改的控制力不大,但技術/架構風險是應該在初期意識到并制定好相關的對策。
還有一點要注意,應用層的緩存只是錦上添花,永遠不要把它當救命稻草,應用的根基(數據庫設計,算法,高效的操作語句,恰當API的選擇等)才是最重要的。
【編輯推薦】