가벼운 마음으로 개발환경 잡아보고 대충 게시판 공부해보려 했으나.. 놀랍게도 1년만에 글을 쓴다.
사실 시작도 제대로 안하고 놔버렸었다.
어쨋든 다시 해보자..
프로젝트 생성, 세팅 글은 https://hellodoor.tistory.com/210 여기서 확인할 수 있다. 무려 일년전글.. ㅎ
Oracle DB를 연동하려고 하는데 그러면 당연히 db가 필요하다.
오라클 db 설치는 https://hellodoor.tistory.com/227 여기
이제 본격적으로 연동을 시작해보려 한다.
우선 resources -> egovframework -> spring -> context-datasource.xml 을 열어보자.
원하는 소스파일을 이름만 알고있으면 쉽게 열 수 있는데 ctrl + shipt + r 버튼을 누르고 파일 이름을 입력하면
이렇게 바로 소스파일을 열 수 있다.
아무튼 파일을 열면 아래 처럼 나오는데
테스트 실행용은 말 그대로 내장용디비로 테스트용이다. 저걸 주석처리하고 아래 보면 oracle이 있는데 주석 해제 한다.
주석 해제하고 db 정보를 입력한다.
<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:@127.0.0.1:1521:orcl" />
<property name="username" value="test"/>
<property name="password" value="1234"/>
</bean>
url value에 "jdbc:oracle:thin@IP정보:포트:SID" 를 입력한다.
username에 디비 계정 아이디 입력하고 password에 비밀번호를 입력하면 된다.
그리고 porm.xml을 간다.
뭔가 친절하게 mysql, oracle db 사용시 아래 설정 추가로 나와 있다. 우선 저걸 다 주석해제 한다.
정확히는 oracle db를 연동할 예정이기 때문에 내가 필요한 건 아래 두 개 이다.
하지만 이대로 porm.xml을 수정하고 돌리면 오류가 발생하는데
먼저 ojdbc는 저 systemPath 해당 경로에 저 ojdbc-14.jar 파일이 있어야 한다. 가지고 있는 ojdbc jar 파일을 WEB-INF/lib 밑에 직접 넣어주면 된다. 내가 가진 ojdbc 파일은 8버전이므로 아래처럼 수정했다.
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>8</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc8.jar</systemPath>
</dependency>
이렇게 수정하면 아래와 같은 오류가 발생한다.
Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp2.BasicDataSource] for bean with name 'dataSource' defined in file [C:\eGovFrameDev-3.10.0-64bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\helloPj\WEB-INF\classes\egovframework\spring\context-datasource.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource
dbcp2 를 찾을 수 없다고 한다. 이게 개같은게 위에서 볼 수 있듯이 context-datasource.xml 에는 dbcp2 로 입력해놓고
porm.xml에는 그냥 dpcp로 되어있어서 일치하지 않는다.
그래서 아래처럼 prom.xml에 dbcp2 라이브러리를 추가해 줘야 한다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.0</version>
</dependency>
여기까지 했으면 저장하고 Project 우클릭 -> Maven -> update project 를 클릭해서 maven update를 한다.
이렇게 하고 start 하면 오류는 안뜬다.
이제 테스트용 테이블과 데이터만 있으면 된다. 기존의 전자정부 예제를 그대로 따라가면서 테스트를 해보자.
resources -> db -> sampledb.sql 파일을 열어서 sqldeveloment같은 dbms 툴에 복사한다.
오라클 sql이랑 거의 비슷하지만 다른게 좀 있다. create memory에서 memory는 빼줘야 한다.
그리고는 뭐 뒤에 ; 세미콜론만 붙여주고 실행하면 테스트 데이터는 준비 된다.
그리고 이제 데이터도 있겠다. start하고 localhost:8080을 들어가보면
--- The error occurred while applying a parameter map.
--- Check the sampleDAO.selectSampleList-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다
요런 에러가 뜬다. 당연히 테스트 디비 hsql 에서 oracle로 변경했으니 sql문도 oracle에 맞게 수정해줘야 한다.
우선 insert, update, delete 뭐 다 확인해봐야겠지만.. 우선 화면만 띄우는게 목적이라 (지침) selectSampleList 쿼리만 확인한다.
이걸 아래처럼 바꿔준다.
LIMIT #recordCountPerPage# OFFSET #firstIndex# ->
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
이렇게 수정하고 다시 restart 후 localhost:8080을 들어간다.
index.jsp에서 controller에 있는 /egovSampleList.do 를 실행하고 아까 insert한 데이터를 조회해와서 아래처럼 보여준다.
사실 테스트용으로 있던 데이터를 오라클로 옮기고 디비 연동정보만 수정한 것이다.
근데 이렇게 간단한게 너무 귀찮고 힘들어..
'웹개발 > 전자정부 eGovFrame' 카테고리의 다른 글
[전자정부] eGovFrame 게시판 (3) : Controller, Service, Dao, VO MVC 패턴. 데이터 저장하기 (7) | 2024.07.24 |
---|---|
[전자정부] eGovFrame 게시판 (1) : 웹 프로젝트 생성, 세팅, 톰캣 설정 (0) | 2021.11.10 |
[전자정부] EgovFrame Install 설치 및 개발환경 (0) | 2021.11.09 |
댓글