전자정부프레임워크에서 데이터베이스 연동을 위한 MyBatis를 활용하는 방법을 배우겠습니다. MyBatis는 SQL을 직접 작성하면서도 매핑을 통해 객체 지향 프로그래밍의 장점을 유지할 수 있는 데이터 매핑 프레임워크입니다.
1. MyBatis란?
MyBatis는 기존의 JDBC 코드를 대체하면서 SQL과 Java 객체 간의 매핑을 쉽게 처리할 수 있도록 도와줍니다. 주요 특징은 다음과 같습니다:
- SQL 중심의 데이터 접근 방식 지원
- XML 기반의 SQL 쿼리 관리
- 동적 SQL을 통한 유연성 제공
전자정부프레임워크에서는 MyBatis를 기본적으로 지원하여 간단하게 데이터베이스 연동 작업을 할 수 있습니다.
2. MyBatis 설정
2-1. MyBatis 설정 파일 작성
MyBatis 설정 파일은 XML 형태로 작성되며, 데이터베이스 연결 정보 및 매퍼 파일의 경로를 정의합니다.
src/main/resources/egovframework/sql-map-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
</settings>
<typeAliases>
<typeAlias alias="user" type="egovframework.example.sample.service.UserVO" />
</typeAliases>
<mappers>
<mapper resource="egovframework/example/sample/service/impl/UserMapper.xml" />
</mappers>
</configuration>
2-2. 데이터베이스 연결 설정
전자정부프레임워크는 Spring과 MyBatis를 통합하여 사용하므로, application-config.xml에 데이터 소스와 MyBatis 연동을 설정합니다.
src/main/resources/egovframework/spring/context-datasource.xml:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/egovframework/sql-map-config.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="egovframework.example.sample.service.impl" />
</bean>
3. MyBatis 매퍼 파일 작성
3-1. 매퍼 파일 생성
매퍼 파일은 SQL 쿼리를 정의하는 곳입니다.
src/main/resources/egovframework/example/sample/service/impl/UserMapper.xml:
http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT USER_ID, USER_NAME, PASSWORD, ROLE
FROM USERS
WHERE USER_ID = #{userId}
4. MyBatis DAO와 Service 구현
4-1. DAO 작성
UserDAO.java:
@Repository("userDAO")
public class UserDAO {
@Autowired
private SqlSession sqlSession;
public UserVO selectUser(String userId) throws Exception {
return sqlSession.selectOne("egovframework.example.sample.service.impl.UserMapper.selectUser", userId);
}
}
4-2. Service 작성
UserService.java:
public interface UserService {
UserVO getUserById(String userId) throws Exception;
}
UserServiceImpl.java:
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource(name = "userDAO")
private UserDAO userDAO;
@Override
public UserVO getUserById(String userId) throws Exception {
return userDAO.selectUser(userId);
}
}
5. 테스트 및 실행
5-1. 테스트 Controller 작성
UserController.java:
@Controller
public class UserController {
@Resource(name = "userService")
private UserService userService;
@RequestMapping("/user.do")
public String getUser(@RequestParam("id") String userId, Model model) throws Exception {
UserVO user = userService.getUserById(userId);
model.addAttribute("user", user);
return "user/userDetail";
}
}
5-2. JSP 작성
/webapp/WEB-INF/views/user/userDetail.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
User Details
User ID: ${user.userId}
User Name: ${user.userName}
Role: ${user.role}
6. 마무리
MyBatis를 통해 SQL을 직접 제어하면서도 객체 매핑의 이점을 누릴 수 있습니다. 다음에서는 전자정부프레임워크의 트랜잭션 처리를 다룰 예정입니다.
'개발 > 전자정부프레임워크' 카테고리의 다른 글
전자정부프레임워크의 로그 기능 구현 (0) | 2024.12.24 |
---|---|
전자정부프레임워크에서 트랜잭션 처리하기 (0) | 2024.12.24 |
전자정부프레임워크의 공통 컴포넌트 활용 (0) | 2024.12.23 |
전자정부프레임워크 데이터베이스 연동 설정 (1) | 2024.12.23 |
전자정부프레임워크 프로젝트 디렉토리 구조 이해 (0) | 2024.12.23 |