說明:
1.在使用spring的時候,如何你用註解來實例化XxxDao,就無法繼承HibernateDaoSupport..
2.使用xml配置的話,可以通過繼承HibernateDaoSupport來進行持久化操作.
定義自己的MyDaoSupport類:
- package dao;
- import javax.annotation.Resource;
- import org.hibernate.SessionFactory;
- import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
- import org.springframework.stereotype.Component;
- @Component("myDaoSupport")
- public class MyDaoSupport extends HibernateDaoSupport{
- /**
- * 說明:
- * 1.在既使用註解又使用HibernateDaoSupport的情況下,只能這麼寫,
- * 原因是HibernateDaoSupport是抽象類,且方法都是final修飾的,
- * 這樣就不能爲其注入sessionFactory或者hibernateTemplate
- * 2.若使用xml配置的話,就可以直接給HibernateDaoSupport注入.
- */
- //而使用HibernateDaosupport,又必須爲其注入sessionFactory或者hibernateTemplate
- //這裏爲其注入sessionFactory,最後只需要讓自己的Dao繼承這個MyDaoSupport.
- //不直接在自己的Dao裏繼承HibernateDaoSupport的原因是這樣可以簡化代碼,
- //不用每次都爲其注入sessionFactory或者hibernateTemplate了,在這裏注入一次就夠了.
- @Resource(name="sessionFactory")
- public void setSuperSessionFactory(SessionFactory sessionFactory){
- super.setSessionFactory(sessionFactory);
- }
- // 或者爲其注入hibernateTemplate
- // @Resource(name="hibernateTemplate")
- // public void setSuperHibernateTemplate(HibernateTemplate hibernateTemplate){
- // super.setHibernateTemplate(hibernateTemplate);
- // }
- }
- package dao;
- import model.User;
- import org.springframework.stereotype.Repository;
- @Repository
- public class UserDao extends MyDaoSupport{
- public void save(User user) {
- this.getHibernateTemplate().save(user);
- }
- }