개발

전자정부프레임워크 3.x에서 DAO와 Mapper 구성

피터JK 2025. 3. 13. 10:11
728x90

전자정부프레임워크 3.x에서 DAOMapper의 존재 여부는 사용하는 ORM 프레임워크인 iBatis 또는 MyBatis에 따라 다르게 구성된다.

1. iBatis 사용 시 (egovframework.rte.psl.orm.ibatis 패키지 포함)

  • DAO 클래스가 많이 사용됨.
  • XML에서 SQL을 정의하고, DAO에서 SQL을 호출하는 방식.
  • SqlMapClientTemplate 또는 SqlMapClient를 사용하여 데이터베이스와 통신.
  • Mapper가 별도로 존재하지 않음.
  • DAO에서 직접 SQL을 실행하는 코드가 포함됨.

📌 예제 (iBatis DAO 사용 예)

@Repository("sampleDAO")
public class SampleDAO extends EgovAbstractDAO {

    public List<?> selectSampleList() {
        return list("Sample.selectSampleList");
    }
}
  • "Sample.selectSampleList" → iBatis XML에서 정의된 SQL ID를 호출.

📌 iBatis XML 예제 (Sample.xml)

<select id="Sample.selectSampleList" resultClass="SampleVO">
    SELECT * FROM SAMPLE_TABLE
</select>

2. MyBatis 사용 시 (egovframework.rte.psl.dataaccess.mapper 패키지 포함)

  • DAO 없이 Mapper 인터페이스로 대체됨.
  • @Mapper 또는 XML Mapper를 사용하여 SQL을 정의.
  • SqlSessionTemplate을 통해 SQL 실행.
  • DAO를 사용하지 않고, 인터페이스 기반으로 SQL을 호출.

📌 예제 (MyBatis Mapper 사용 예)

@Mapper
public interface SampleMapper {
    List<SampleVO> selectSampleList();
}

📌 MyBatis XML Mapper (SampleMapper.xml)

<select id="selectSampleList" resultType="SampleVO">
    SELECT * FROM SAMPLE_TABLE
</select>

3. DAO와 Mapper의 차이점 정리

구분  iBatis (DAO 방식) MyBatis (Mapper 방식)
SQL 실행 방식 SqlMapClientTemplate 활용 SqlSessionTemplate 활용
DAO 사용 여부 DAO 클래스에서 SQL 호출 DAO 없이 Mapper 인터페이스 사용
XML에서 SQL 정의 <sqlMap> XML 사용 <mapper> XML 사용
인터페이스 사용 여부 없음 @Mapper 인터페이스 사용
전자정부프레임워크 패키지 egovframework.rte.psl.orm.ibatis egovframework.rte.psl.dataaccess.mapper

결론

전자정부프레임워크 3.x에서 DAO와 Mapper가 동시에 존재하는 것은 iBatis와 MyBatis를 모두 지원.

  • iBatis 기반 프로젝트라면 DAO 클래스를 사용하고,
  • MyBatis 기반 프로젝트라면 Mapper 인터페이스를 사용.

현재 전자정부프레임워크에서는 MyBatis 사용을 권장하므로, 새로운 프로젝트에서는 MyBatis 방식을 선택하는 것이 좋다. 

728x90