對於hibernate褒貶不一,不過爲了擴展性和快速開發,還是挺適用的。我這邊用的框架是strtus2.X Spring2.5 JPA1.0 hibernate 3.2.5
hibernate在複雜數據查詢的時候,用HQL或者Criteria都不是好的辦法,另外對大量數據的插入和刪除,性能上也有點問題。這裏就直接引用了jdbcTemple。
我這邊使用的連接池是c3p0,由於JPA對proxool無法直接支持,頭疼的要命,要用proxool只能自己寫一個filter
因爲要整合事務和數據源,必須使用datasource.
下面的基本的項目部署信息:
在jpa的entityManagerFactory中嗲用了persistence.xml,這個文件描述了hibernate的一些特性。ps:這個文件裏面本來是空的,因爲resin要識別hibernate.dialect,否則無法加載。
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
這一條是對jpa的註解描述,可以直接識別不用在寫一堆xml了
重要的是上面這一句,直接對jdbcTemple進行了注入,並且將dataSource直接作爲屬性。
另外,使用到jdbcTemple的bean也需要單獨的一個xml,在web.xml加載的時候,也加載進去。
我這裏jdbcTemple只做複雜的查詢,沒有做insert delete update等sql操作。所以在事務裏面就把datasource給註釋了。
如果要使用到jdbcTemple的sq操作級的功能,必須在事務裏面添加datasource,並且關閉二級緩存。(JPA1.0還沒有支持2級緩存,所以不存在這個問題。) 後期會升級成爲JPA2.0,2.0在1.0的基礎上有了很大的改進,可以分級考慮(跑題了) :)
可以集成jdbcTemple當然也可以集成ibatis,不過有點麻煩,要使用ibatis的一些特性,並且註解的方式也不一樣,唯一的辦法就是設定一個aop的攔截,對ibatis的Service進行攔截直接操作。
ibatis的集成辦法,我後期會編輯上傳。歡迎各位大蝦斧正~