매번 VO가 생성될 때 마다 DAO를 새로 만들어줘야 하는 것은 번거로운 작업임. 이를 위해 쓰는 것이 Generic임.

Generic은 클래스나 인터페이스, 메서드를 정의할 때 타입(type)도 파라미터로 쓰게 해줌.


1. 먼저 GenericDAO를 만듦: 

package org.soju.foodstore.dao;


public interface GenericDAO<E, K> {

public void create(E vo) throws Exception;

public StoreVO read(K no) throws Exception;

public void update(E vo) throws Exception;

public void delete(K no) throws Exception;

}

//read 메서드에서 StoreVO를 반환하는데, 이 부분을 개선할 여지가 있음.



2. 그 뒤 MenuDAO 인터페이스가 GenericDAO 인터페이스를 상속받음. 상속받을 때 VO의 타입과 primary key의 타입을 지정해줌:

package org.soju.foodstore.dao;

import org.soju.vo.MenuVO;

public interface MenuDAO extends GenericDAO<MenuVO, Integer> {

}



3. 이어 MenuDAO를 상속한 MenuDAOImpl이 필요한 메서드를 오버라이드함.

Posted by 타다키치
,