Spring整合Hibernate的DAO模式通用的接口和适配器

通用的DAO接口:

package org.dave.base.dao;   
  
import java.util.List;   
  
public interface BaseDAO {   
  
    public void save(Object entity);   
  
    public void delete(Object entity);   
  
    public Object findById(String id);   
  
    public List findAll();   
  
    public List findByExample(Object exampleEntity);   
  
    public List findByProperty(String field, Object value);   
  
    public List findByProperty(String field, Object minValue, Object maxValue);   
  
    public List findByLinkProperty(String field, Object value);   
  
    public Object merge(Object entity);   
  
    public void attachDirty(Object entity);   
  
    public void attachClean(Object entity);   
  
}  

 

公共的DAO适配器:

package org.dave.base.dao.adapter;   
  
import java.util.List;   
  
import org.dave.base.dao.BaseDAO;   
import org.hibernate.LockMode;   
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  
public abstract class BaseDAOAdapter extends HibernateDaoSupport implements BaseDAO {   
  
    protected BaseDAOAdapter() {   
  
    }   
  
    public void save(Object entity) {   
        getHibernateTemplate().saveOrUpdate(entity);   
    }   
  
    public void delete(Object entity) {   
        getHibernateTemplate().delete(entity);   
    }   
  
    public List findAll(String entityName) {   
        String queryString = "from " + entityName;   
        return getHibernateTemplate().find(queryString);   
    }   
  
    public Object findById(String entityName, String id) {   
        return getHibernateTemplate().get(entityName, id);   
    }   
  
    public List findByProperty(String entityName, String field, Object value) {   
        String queryString = "from " + entityName + " as model where model." + field + "= ?";   
        return getHibernateTemplate().find(queryString, value);   
    }   
  
    public List findByProperty(String entityName, String field, Object minValue, Object maxValue) {   
        String queryString = "from " + entityName + " as model where model." + field + ">? and model." + field + "<?";   
        String[] values = { minValue, maxValue };   
        return getHibernateTemplate().find(queryString, values);   
    }   
  
    public List findByProperty(String entityName, String field, String value) {   
        String queryString = "from " + entityName + " as model where model." + field + "link '%" + value + "%'";   
        return getHibernateTemplate().find(queryString);   
    }   
  
    public List findByExample(Object exampleEntity) {   
        return getHibernateTemplate().findByExample(exampleEntity);   
    }   
  
    public Object merge(Object entity) {   
        return getHibernateTemplate().merge(entity);   
    }   
  
    public void attachDirty(Object entity) {   
        getHibernateTemplate().saveOrUpdate(entity);   
    }   
  
    public void attachClean(Object entity) {   
        getHibernateTemplate().lock(entity, LockMode.NONE);   
    }   
  
}  

 

例子:
2.DAO接口:

package org.dave.user.dao;   
  
import java.util.List;   
  
import org.dave.base.dao.BaseDAO;   
  
public interface UserDAO extends BaseDAO {   
       
    public List findByUsername(String username);   
       
    public List findByUserpass(String userpass);   
       
}  

 

3.DAO类:

package org.dave.user.dao.impl;   
  
import java.util.List;   
  
import org.dave.base.dao.adapter.BaseDAOAdapter;   
import org.dave.user.dao.UserDAO;   
  
public class UserDAOImpl extends BaseDAOAdapter implements UserDAO {   
  
    public static final String USER = "org.dave.user.model.User";   
    public static final String USERNAME = "username";   
    public static final String USERPASS = "userpass";   
  
    public List findAll() {   
        return super.findAll(USER);   
    }   
  
    public Object findById(String id) {   
        return super.findById(USER, id);   
    }   
  
    public List findByProperty(String field, Object value) {   
        return super.findByProperty(USER, field, value);   
    }   
  
    public List findByProperty(String field, Object minValue, Object maxValue) {   
        return super.findByProperty(USER, field, minValue, maxValue);   
    }   
  
    public List findByLinkProperty(String field, String value) {   
        return super.findByProperty(USER, field, value);   
    }   
  
    public List findByUsername(String username) {   
        return this.findByProperty(USERNAME, username);   
    }   
  
    public List findByUserpass(String userpass) {   
        return this.findByProperty(USERPASS, userpass);   
    }   
  
}  

 

 

 

 

 

 

你可能感兴趣的:(DAO,spring,Hibernate,orm)