Mybatis같은 mapper 프레임워크를 사용할 때 로컬에서는 testDB로 개발을 하고 웹 애플리케이션을 war 로 묶어서 업로드를 하면 deployDB를 사용하게 됨.
배포할때에만 enviroment 의 default 값을 살짝 바꿔서 서비스용 DB를 사용하게 할 수도 있으나 자주 깜빡해서 배포하고나면 DB 설정 정보가 틀려서 같은 일을 두 번 세 번 반복하게 됨.
해결 방법은 DB 설정 정보를 웹 애플리케이션 바깥으로 뽑아내서 애플리케이션 안에서는 어떤 DB를 사용하는지 알지 못하게 해야 하는데...
검색을 해보니 대략 몇가지 방법이 있는데 톰켓의 경우는 server.xml 설정 파일에서 Context element 에 직접 parameter 로 넣어두는게 가장 적절할 듯....
1. DB 설정 정보를 두 개의 파일로 분리함.
- mybatis-test-config.xml - 테스트 DB 접속 정보
- mybatis-deploy-config.xml - 배포 DB 접속 정보
2. 톰켓에 테스트용 DB 설정 파일 경로를 적어줌.
${TOMCAT_HOME}/conf/server.xml 에서 parameter 값으로 테스트 DB 설정 정보가 담긴 파일 경로를 적어줌.
만일 이클립스에서 작업 중이라면 Project Explorer 의 Server 프로젝트에서 현재 사용 중인 톰켓 설정 정보 파일을 수정해줌.
3. 애플리케이션 초기화 코드 수정.
ServletContextListener 를 상속한 애플리케이션 초기화 담당 클래스에서 DB설정 파일 경로를 읽어들이도록 수정.
먼저 application parameter에 파일 경로가 있는지 찾아보고, 없으면 배포 DB 정보(mybatis-deploy-config.xml)를 곧바로 가져다 사용함.
요점은 웹 애플리케이션 입장에서보면 자신이 어떤 DB를 가지고 작업을 하는지 모르도록 해야 한다는 것, 그러려면 이 정보를 웹 애플리케이션 바깥에서 꽂아줘야 함.
'Dev' 카테고리의 다른 글
PingBot Architecture (0) | 2014.05.04 |
---|---|
[javascript] 숫자를 한글로 변환하기 (0) | 2013.12.10 |
[HTML5] Html5 강좌 동영상 (0) | 2011.03.25 |