Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計(jì)

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評(píng)論排行榜

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

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

           

          簡明的說一下類的作用:

           

          BaseDao(接口類):

          實(shí)體中共有的增刪改查操作的接口

           

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

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

           

          UserDao(接口類):繼承BaseDao類

          實(shí)體中除了基本操作的額外操作,用于擴(kuò)充功能。

           

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

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

           

           

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

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

           

          在ssh2 結(jié)構(gòu)中,可以利用spring 對(duì)UserService 類進(jìn)行注入U(xiǎn)serDao類即可。如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"/>

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

           

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

          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) 評(píng)論(0)  編輯  收藏 所屬分類: Hibernate/ORM

          主站蜘蛛池模板: 昔阳县| 库伦旗| 海南省| 远安县| 丰台区| 哈尔滨市| 黑山县| 揭东县| 三亚市| 岳池县| 于都县| 广东省| 铁岭市| 精河县| 荥经县| 长兴县| 固阳县| 安宁市| 涡阳县| 共和县| 余姚市| 鹿泉市| 吉首市| 阿拉善右旗| 达尔| 阿拉善盟| 阆中市| 嘉义市| 阿鲁科尔沁旗| 瓮安县| 玉田县| 灵丘县| 民乐县| 定西市| 黄骅市| 鹿邑县| 太康县| 连云港市| 大丰市| 汪清县| 育儿|