3. Page l 3
q Annotation 기반 Spring MVC 및 Layered architecture 준수
2. 아키텍처 적용규칙 (1/2)
대상 클래스 적용규칙
Controller 클래스
• 클래스 상단에 @Controller 선언
• URL Mapping 시 @RequestMapping 선언
• View 부분과 Model(business logic 및 data) 부분을 Controller를 통해 분리
ServiceImpl 클래스 • 클래스 상단에 @Service 선언
DAO/Mapper 클래스
• 클래스 상단에 @Repository 선언
• 단, MyBatis Mapper Interface 방식을 활용하는 경우 에는 @Mapper 선언
4. Page l 4
q 클래스 상속 및 인터페이스 구현 규칙
2. 아키텍처 적용규칙 (2/2)
대상 클래스 적용규칙
ServiceImpl 클래스
• AbstractServiceImpl 또는 EgovAbstractServiceImpl(3.0버전 이상)을 상속/확장하고, 업무에 대한
특정 Service 인터페이스를 구현하여야 함
DAO/Mapper 클래스
• EgovAbstractDAO(iBatis) 또는 EgovAbstractMapper(MyBatis)를 상속/확장하여야 함
• MyBatis Mapper Interface 방식의 경우, @Mapper 선언
• Hibernate/JPA 혹은 Spring Data JPA 방식의 경우, 정해진 규칙 없음
• ‘데이터처리 적용규칙’ 참조
5. Page l 5
q iBatis 적용 시 데이터 처리 방법 예시
– EgovAbstractDAO 클래스 상속/확장
– iBatis 사용을 위한 XML 설정파일 3가지
• iBatis 공통설정파일 ( <sqlMapConfig> ~ </sqlMapConfig> )
• SQL 매핑파일 ( <sqlMap> ~ </sqlMap> )
• SqlMapClientFactoryBean 빈설정
3. 데이터처리 적용규칙 (1/3)
public class EgovAbstractDAO extends SqlMapClientDaoSupport { … }
@Repository("employeeDao")
public class EmployeeDao extends EgovAbstractDAO { … }
6. Page l 6
q MyBatis 적용 시 데이터 처리 방법 예시 (1/2)
1) EgovAbstractMapper 클래스 상속/확장
– MyBatis 사용을 위한 XML 설정파일 3가지
• MyBatis 공통설정파일 ( <configuration> ~ </configuration> )
• SQL 매핑파일 ( <mapper> ~ </ mapper > )
• SqlSessionFactoryBean 빈설정
3. 데이터처리 적용규칙 (2/3)
public abstract class EgovAbstractMapper extends SqlSessionDaoSupport {
@Repository("employeeMapper")
public class EmployeeMapper extends EgovAbstractMapper { … }
7. Page l 7
q MyBatis 적용 시 데이터 처리 방법 예시 (2/2)
2) Mapper Interface 방식
– MyBatis Mapper Interface 사용을 위한 XML 설정파일 4가지
• MyBatis 공통설정파일 ( <configuration> ~ </configuration> )
• SQL 매핑파일 ( <mapper> ~ </ mapper > )
• SqlSessionFactoryBean 빈설정
• MapperConfigurer 빈설정
3. 데이터처리 적용규칙 (2/3)
@Mapper("employeeMapper")
public interface EmployeeMapper { … }
<!-- MapperConfigurer setup for MyBatis Database Layer -->
<bean class="egovframework.rte.psl.dataaccess.mapper.MapperConfigurer">
<property name="basePackage" value=" 스캔할 Mapper Interface가 속한 풀패키지명" />
</bean>
8. Page l 8
3. 데이터처리 적용규칙 (3/3)
q Spring Data JPA 적용 시 데이터 처리 방법 예시
– 다양한 persistence store(Big Data, NoSQL 등)를 지원하기 위한 데이터액세스 기술
– CrudRepository 또는 PagingAndSortingRepository를 상속하는 interface 방식의 Repository를 작성
q Hibernate/JPA 적용 시 데이터 처리 방법 예시
– DAO에서 SessionFactory(low level) 또는 HibernateTemplate/JpaTemplate 활용 또는
HibernateDaoSupport/JpaDaoSupport를 확장 또는 LocalContatinerEntityManagerFactoryBean 설정 등을 이
용
– 다음 코드는 LocalContatinerEntityManagerFactoryBean을 이용한 EntityManager 사용 방법 예시
public interface DepartmentRepository extends CrudRepository<Department, Long> { … }
public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long> { … }
public class UserDAO {
.
@PersistenceContext
private EntityManager entityManager;
public void createUser(User user) throws Exception {
entityManager.persist(user);
}
…
}
9. Page l 9
4. 활용 및 확장 규칙
q 표준프레임워크 실행환경 준수
– 표준프레임워크 실행환경은 적극적으로 활용되어야 함
– 실행환경 부분 임의 변경 금지
q 업무 클래스는 egovframework.rte 패키지 내에 정의될 수 없음
q 기타
– 이외에 개발환경, 운영환경 및 공통컴포넌트 부분은 선택적으로 적용 가능하며, 임의 변경 및 확장 가능함
– UI 부분에 RIA(Rich Internet Application)가 적용되는 경우는 UI Adaptor 또는 RESTful 방식을 적용 활용해
야 함
– 공통컴포넌트 적용을 검토한 후, 필요기능과의 차이를 분석하고 해당 업무에 최적화하여 활용