使用Spring構建你的ORM應用的好處包括: l 避免綁定非凡的技術,答應mix-and-match的實現策略。雖然Hibernate非常強大,靈活,開源而且免費,但它還是使用了自己的特定的API。此外有人也許會爭辯:iBatis更輕便而且在不需要復雜的O/R映射策略的應用中使用也很優秀。能夠選擇的話,使用標準或抽象的API來實現主要的應用需求,通常是更好的。尤其,當你可能會因為功能,性能或其他方面的原因而需要切換到另一個實現的時候。舉例來說,Spring對Hibernate事務和異常的抽象,以及能夠讓你輕松交換mapper和DAO對象(實現數據訪問功能)的IoC機制,這兩個特性可以讓你在不犧牲Hibernate性能的情況下,在你的應用程序中隔離Hibernate的相關代碼。處理DAO的高層次的service代碼不需要知道DAO的具體實現。這個方法可以很輕易使用mix-and-match方案互不干擾地實現數據訪問層(比如在一些地方用Hibernate,一些地方使用JDBC,其他地方使用iBatis),mix-and-match有利于處理遺留下來的代碼以及利用各種技術(JDBC,Hibernate,iBatis)的優點。
public class ProductDaoImpl implements productDao{ private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public List loadProductsByCategory(final String category) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.sessionFactory); return (List) hibernateTemplate.execute( new Hi