hibernateTemplate和hibernateDaoSupport的注意問題!

http://bosslife.blog.163.com/blog/static/114917017201061911130625/


1.雖然繼承了HibernateDaoSupport這個類,但是this.getSession(),獲得的session也要在使用後即使關閉,因爲這個session是原生的session不是經過sping代理過的,並且還沒有事物管理,自動提交,自動關閉連接等功能,所以使用使用getSession()獲得session時一定要關閉。

2.使用getHibernateTemplate()中的1.exceute(callback) 2. executeFind(callback) 3.execute(callback, boolean)時一定要注意:1和2會點方法中使用的session都是經過spring代理過的會自動關閉,但是3最後一個參數標示的是:回調函數中使用的session是否是本地的(沒有經過是spring代理過,沒有自動關閉連接的功能)。true:本地的 false:spring代理過的(不用但是session是否關閉)

3.spring的bean的默認管理都是單列模式,在ssh整合中保證各dao的的實例是無狀態的,佛則在一旦有某個方法設置狀態之後,別的方法也就有了狀態,但是別的方法又不需要這個狀態,或者對別的放產生了別的不好的影響:例如

4、getHibernateTemplate().setMaxResults(3);

一旦是給HibernateTemplate設置了最大輸出記錄數,那麼以後調用這個類中的別的方法的最大記錄數也就是3個,對別人調用這個類的別的方法產生的副作用,除非你再次設置你想要的最大記錄數,setMaxResults(10);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章