개발
전자정부프레임워크 3.x에서 DAO와 Mapper 구성
피터JK
2025. 3. 13. 10:11
728x90
전자정부프레임워크 3.x에서 DAO와 Mapper의 존재 여부는 사용하는 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