egov

Egov - oracle 연동

전주천둥새 2023. 5. 16. 09:03

1. dto / service / mapper 세팅

>>> 위와같은 구조로 패키지를 구성하였다

2. pom.xml에 오라클 의존성 추가

>>> egov에서는 기본적으로 hdsqldb를 사용하기 때문에 기본적으로 작성되어 있는 부분 주석처리 후 oracle 주석처리 제거

<dependency>
            <groupId>com.googlecode.log4jdbc</groupId>
            <artifactId>log4jdbc</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        
        <dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>2.4.0</version>
		</dependency>

        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>6</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath>
        </dependency>
	</dependencies>
[출처] egovframework - oracle 연동|작성자 cubha

>>> 위와같은 구조로 변경 (*** 주석제거시 dependency에 오류가 발생하는데 version과 jar파일의 파일명을 위처럼 일치 시켜준 뒤 인터넷에 검색해서 jar 파일 다운받고 WEB-INF 하위 lib 폴더에 삽입 ***)

3. context-datasource 수정

>>> resources/egov/spring 하위의 context-datasource 파일 수정

>>> 사용할 db부분 제외하고 전부 삭제하고, 자신 db와 일치시켜준다.

▼ 기존

▼ 변경

<!-- oracle (POM에서 commons-dbcp, ojdbc(라이센스 사항으로 별도로 배포되지 않음) 관련 라이브러리 설정) -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
        <property name="username" value="syinetesh"/>
        <property name="password" value="syineteshpw"/>
    </bean>
[출처] egovframework - oracle 연동|작성자 cubha

4. egov/sqlmap/oracle 하위에 있는 sql-mapper-config 수정 (확실하지않음)

>>> 기존에 작성되있는 부분을 본인의 vo 또는 dto 경로로 변경한다

▼ 기존

▼ 변경

<configuration>
    <typeAliases>
		<typeAlias alias="egovMap" type="org.egovframe.rte.psl.dataaccess.util.EgovMap"/>
		<typeAlias alias="UserDTO" type="com.test.esh.dto.UserDTO"/>
		<typeAlias alias="DeptDTO" type="com.test.esh.dto.DeptDTO"/>
		<typeAlias alias="PositionDTO" type="com.test.esh.dto.PositionDTO"/>
		<typeAlias alias="RankDTO" type="com.test.esh.dto.RankDTO"/>
    </typeAliases>
</configuration>
[출처] egovframework - oracle 연동|작성자 cubha

5. 데이터 전송을 위한 mapper, service, vo(dto) 등을 작성

>>> getter, setter만 사용하기때문에 dto로 작성하였으며, serviceimpl의 필요성을 못느껴서 그냥 service만 작성하였다.

▼ controller

@Controller
@RequestMapping("/user")
public class UserController {
	
	private static final Logger log = LoggerFactory.getLogger(UserController.class);
	
	private final UserService userService;
	
	public UserController(UserService userService) {
		this.userService = userService;
	}
	
	// 사용자 목록 조회
	@GetMapping("/userList.do")
	public String getUserList(Model model) {
		List<UserDTO> userList = userService.getUserList();
		model.addAttribute("userList", userList);
		System.out.println("**Controller!!");
		log.info("userList  :  {}", userList);
		return "user/userList";
	}
[출처] egovframework - oracle 연동|작성자 cubha

▼ service

@Service("UserService")
public class UserService {
	
	private static final Logger log = LoggerFactory.getLogger(UserController.class);
	
	private final UserMapper userMapper;
	
	public UserService(UserMapper userMapper) {
		this.userMapper = userMapper;
	}
	
	// 사용자 목록 조회
	public List<UserDTO> getUserList(){
		List<UserDTO> userList = userMapper.getUserList();
		System.out.println("**Service!!");
		log.info("userList  :  {}", userList);
		return userList;
	}
}
[출처] egovframework - oracle 연동|작성자 cubha

▼ mapper(.java)

@Mapper("UserMapper")
public interface UserMapper {
	
	// 사용자 목록 조회
	public List<UserDTO> getUserList();

}
[출처] egovframework - oracle 연동|작성자 cubha

 

▼ mapper(.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.esh.mapper.UserMapper">

	<resultMap id="UserResultMap" type="UserDTO">
		<result property="userId" 			column="USER_ID"/>
		<result property="userPw" 			column="USER_PW"/>
		<result property="userName" 		column="USER_NAME"/>
		<result property="userDept" 		column="USER_DEPT"/>
		<result property="userPosition" 	column="USER_POSITION"/>
		<result property="userRank" 		column="USER_RANK"/>
		<result property="userPhone" 		column="USER_PHONE"/>
		<result property="userHomePhone" 	column="USER_HOME_PHONE"/>
		<result property="userAddr"			column="USER_ADDR"/>
		<result property="userEmail" 		column="USER_EMAIL"/>
	</resultMap>
	
	<select id="getUserList" resultMap="UserResultMap">
		SELECT
		    USER_DEPT,
		    USER_RANK,
		    USER_POSITION,
		    USER_NAME,
		    USER_EMAIL,
		    USER_PHONE
		FROM TB_USER
	</select>

</mapper>
[출처] egovframework - oracle 연동|작성자 cubha

6. 연결확인

>>> userList.do 경로로 가면 컨트롤러를 통해 log가 출력되는걸 확인할수있다!!!!