SSH 프레임워크의 일반 DAO 이해

범용 DAO는 SSH 프레임워크와 아무런 관계가 없다. 다음은 SSH 중의 범용 DAO를 예로 들어 자신이 범용 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 find(String hql, Object... values);
	
	public int getTotalRows();  

	public int getPageSize(int size);  
	
	public List findByPage(final int pageNo, final int size);  

}
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 find(String hql, Object... values) {

		return null;
	}

	@Override
	public int getTotalRows() {

		return 0;
	}

	@Override
	public int getPageSize(int size) {

		return 0;
	}

	@Override
	public List findByPage(int pageNo, int size) {

		return null;
	}

}
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;
		}
	}
}

 

좋은 웹페이지 즐겨찾기