SSH 프레임워크의 일반 DAO 이해
4184 단어 SSH 프레임워크의 일반 DAO 이해
우선 너는 이런 몇 가지 통속적이고 알기 쉬운 개념을 알아야 한다.
1.범용 DAO: IGenericDAO
2.유니버설 DAO의 실현:GenericDAOImpl
3.구체적인 DAO: IUserDAO
4.구체적인 DAO 구현: UserDAOImpl
이렇게 말하자면 유니버설 DAO는 하나의 인터페이스로 표준을 정의했다. 데이터베이스에 대한 각 방면의 조작을 봉인하고 삭제하고 수정하며 보통 페이지를 나누고 ID를 통해 실체를 찾는 등 일련의 방법이 있다.
일반적인 DAO Impl, 일반적으로 하나의 일반적인 클래스, 실현: 1)Hibernate Dao Support, 이렇게 해야만 DAO를 설정session Factory에 자동으로 불러올 수 있고 대상이 지속될 수 있다
기능
2) IGenericDAO, 공통 인터페이스의 모든 방법을 실현한다. 범용이기 때문에 방법에서 논리적 실현을 쓰고 어떤 실체에 전달되면
대응하는 기능을 실현하다.이곳은 그것의 매개 변수가 여전히 범형이다.
구체적인 실체 인터페이스 IUserDAO: 많은 사람들이 의문을 가지고 있다. 이 인터페이스는 무엇을 해야 하는지 사실 매우 간단하다. 이 인터페이스는 유니버설 DAO를 계승하고 네가 가입하고 싶은 논리, 예를 들어 로그인 검증 등 업무를 추가할 수 있다.
논리한 회사의 각 부서의 자신의 방법의 봉인처럼 물론 이 논리는 구체적인 DAO에서 직접 실현할 수 있지만 프로그래밍의 사상은 인터페이스를 향한 것이다
네, 기준을 정하는 곳이기 때문에 인터페이스에 적으세요.이곳에서 전달되는 매개 변수는 바로 구체적인 매개 변수다.
구체적인 DAO의 실현 UserdaOImpl 클래스: 이것은 유니버설 DAO의 실현:GenericDAOImpl을 계승하고 구체적인 자신의 DAO 인터페이스를 실현했다.범용 파라미터를 통해 전달되기 때문에, 그것이 전달하는 것은 무엇입니까
매개 변수, 그가 바로 이 매개 변수의 실현이다. 즉, 이것은 사실상 IUserDAO의 구체적 실현이고 일반 IGenericDAO의 모든 데이터에 대한 계승이다.
를 참고하십시오.사실 이때 통과.
이제 위에서 설명한 내용을 비교해 보겠습니다.
package cn.hglq4.eshop.dao;
import java.io.Serializable;
import java.util.List;
public interface IGenericDAO {
public void save(T entity);
public void delete(T entity);
public void deleteById(Class entityClass, ID id);
public void update(T entity);
public T findById(Class entityClass, ID id);
public List findAll(Class entityClass);
public List
package cn.hglq4.eshop.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.hglq4.eshop.dao.IGenericDAO;
public class GenericDAOImpl extends HibernateDaoSupport implements
IGenericDAO {
private Class clazz;
public GenericDAOImpl(){
clazz=(Class)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
public void save(T entity) {
getHibernateTemplate().save(entity);
}
@Override
public void delete(T entity) {
}
@Override
public void deleteById(Class entityClass, ID id) {
}
@Override
public void update(T entity) {
}
@Override
public T findById(Class entityClass, ID id) {
return null;
}
@Override
public List findAll(Class entityClass) {
return null;
}
@Override
public List
package cn.hglq4.eshop.dao.user;
import cn.hglq4.eshop.dao.IGenericDAO;
import cn.hglq4.eshop.entity.user.Users;
public interface IUserDAO extends IGenericDAO {
public Users login(String account,String pwd);
}
package cn.hglq4.eshop.dao.impl.user;
import java.util.List;
import org.springframework.stereotype.Repository;
import cn.hglq4.eshop.dao.impl.GenericDAOImpl;
import cn.hglq4.eshop.dao.user.IUserDAO;
import cn.hglq4.eshop.entity.user.Users;
@Repository
public class UserDAOImpl extends GenericDAOImpl implements IUserDAO {
@Override
public Users login(String account, String pwd) {
List list=getHibernateTemplate().find("from Users where account=? and pwd=?", new Object[]{account,pwd});
if(list!=null&&list.size()==1){
return list.get(0);
}else{
return null;
}
}
}