Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計

          留言簿(23)

          積分與排名

          優(yōu)秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          簡化開發(fā)-base類(泛型)

          本文章主要講了兩個技巧,一是在Dao層中基本操作的復用,和Spring配置中的一些代碼復用。

           

          簡明的說一下類的作用:

           

          BaseDao(接口類):

          實體中共有的增刪改查操作的接口

           

          BaseHibernateDao(實現(xiàn)類):繼承HibernateDaoSupport,實現(xiàn)BaseDao接口

          實現(xiàn)BaseDao類中的基本操作。

           

          UserDao(接口類):繼承BaseDao類

          實體中除了基本操作的額外操作,用于擴充功能。

           

          UserHibernateDao(實現(xiàn)類):繼承BaseHibernateDao類,實現(xiàn)UserDao接口

          實現(xiàn)UserDao類的操作。

           

           

          從上面的分析可以看出來,UserDao類是包含有全部的底層操作的接口,而UserHibernateDao類是實現(xiàn)了UserDao

          類的全部操作。實現(xiàn)了base類后,實際上是簡化了實體通用的操作,只寫一次就行了。。

           

          在ssh2 結構中,可以利用spring 對UserService 類進行注入UserDao類即可。如Spring的配置文件: 

              <bean id="daoTemplate" abstract="true">
          <property name="sessionFactory" ref="sessionFactory"></property>
          </bean>
          <bean id="userDao" class="dao.hibernate.UserHibernateDao" parent="daoTemplate"/>
          <bean id="userService" class="service.imp.UserService">
          <property name="userDao" ref="userDao"/>
          <bean id="***Dao" class="dao.hibernate.***HibernateDao" parent="daoTemplate"/>
          <bean id="***Service" class="service.imp.UserService">
          <property name="***Dao" ref="***Dao"/>

          從這個配置文件上又有個 daoTemplate 的bean ,這個bean 是一個抽象類,注入了sessionFactory,如果其他bean類繼承它的話,就可以不用在為它注入sessionFactory了,,這個也是一個技巧,有點像Base類,功能都是實現(xiàn)代碼的復用。。。

           

          下面是上面一些類的演示代碼:

          BaseDao

          import java.io.Serializable;
          import java.util.List;
          public interface BaseDao<T,ID extends Serializable> {
          public void save(T entity);
          public void delete(T entity);
          public void deleteById(Class<T> entityClass,ID id);
          public void update(T entity);
          public T findById(Class<T> entityClass,ID id);
          public List<T> findAll(Class<T> entityClass);
          }


          BaseHibernateDao

          package dao.base;
          import java.io.Serializable;
          import java.util.List;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
          public class BaseHibernateDao<T,ID extends Serializable> extends HibernateDaoSupport implements BaseDao<T,ID> {
          @Override
          public void delete(T entity) {
          this.getHibernateTemplate().delete(entity);
          }

          @Override
          public void deleteById(Class<T> entityClass, ID id) {
          delete(
          this.findById(entityClass, id));
          }

          @Override
          public T findById(Class<T> entityClass, ID id) {
          return (T)this.getHibernateTemplate().get(entityClass, id);
          }

          @Override
          public List<T> findAll(Class<T> entityClass) {
          String name
          =entityClass.getName();
          return this.getHibernateTemplate().find("from"+name);
          }

          @Override
          public void save(T entity) {
          this.getHibernateTemplate().save(entity);
          }

          @Override
          public void update(T entity) {
          this.getHibernateTemplate().update(entity);
          }

          }




          UserDao

           

          package dao;
          import dao.base.BaseDao;
          import model.User;
          public interface UserDao extends BaseDao<User,Integer>{
          User findUserByNameAndPass(String name,String password);
          }


           

           UserHibernateDao

          package dao.hibernate;   
             
          import java.util.List;   
             
          import model.User;   
          import dao.UserDao;   
          import dao.base.BaseHibernateDao;   
             
          public class UserHibernateDao extends BaseHibernateDao<User,Integer> implements UserDao {   
             
              @Override   
              
          public User findUserByNameAndPass(String name, String password) {   
                  
          // TODO Auto-generated method stub   
                  List<User> us=this.getHibernateTemplate().find("from User user where name=? and password=?",new Object[]{name,password});   
                  
          if(us.size()==1)   
                      
          return us.get(0);   
                  
          else   
                      
          return null;   
              }
             
             
          }
           

          posted on 2011-02-20 14:13 都市淘沙者 閱讀(1570) 評論(0)  編輯  收藏 所屬分類: Hibernate/ORM

          主站蜘蛛池模板: 张家港市| 永春县| 阜新| 万宁市| 乡宁县| 民权县| 盐亭县| 西畴县| 广宁县| 平湖市| 灵武市| 临澧县| 巴塘县| 宜丰县| 鲜城| 县级市| 淮阳县| 新河县| 绥江县| 通化县| 淮滨县| 塘沽区| 宜春市| 叙永县| 同仁县| 惠安县| 壤塘县| 洛隆县| 阿克苏市| 绍兴市| 阜南县| 武宁县| 洪泽县| 临清市| 昆山市| 慈溪市| 疏附县| 玉林市| 铅山县| 泊头市| 陇南市|