본문 바로가기

-전자정부 프레임워크

전자정부 프레임워크 다중 DB 연동

반응형

전자정부 프레임워크를 이용하여 mysql과 oracle을 둘 다 연동할 기회가 생겼다. 스프링이나 모델 2 를 이용하여 oracle DB를 한 개만 연동해 보았지만 둘 다 연동하는 것은 처음이라 많이 찾아보았지만, 정확한 방법을 딱히 찾기 어려웠다. 이번 기회에 나중에도 쉽게 쓸 수 있게.. 정리를 해볼까 한다.

 

가장 기초적인건 pom.xml에 dependency를 걸어야 한다. Mysql과 oracle을 넣는다.

 

 

전자정부프레임워크는 globals.properties를 이용하여 key value를 이용해 운영서버타입과

연결용 IP, DB서버 타입 driverClassName, Url 등을 한꺼번에 넣어 ref를 시킨다. 연동을 할시 이 파일안에 key값을 다르게 하여 그냥 넣어도 되지만, 난 globals2파일을 만들어 추가로 연동할 DB의 정보를 다 이곳에 넣었다.

 

 

Context-datasource.xml로 가면 이미 다 연동을 잘 시킬 수 있게 만들어져 있지만 두 개를 쓰기엔 아직 부족하다. PropertyConfigurer 를 보면 properties가 한 개만 참조되어있어, 자신이 생성한 properties 파일을 value에다 추가 한 후 각각의 class 이름이 org.apache.commons.dbcp.BasicDataSource인 빈에다가 oracle 이 이미 연동되어있고, mysql을 추가할려고 한다면 alias를 추가하여 Dbtype을 추가해야되고, driverClassName이나 url 등등을 자신이 추가한 properties key값으로 입력해야한다.

 

 

 

이제 context.sqlMap.xml로 넘어가 새로운 SqlMapClientFactoryBean을 생성하여 bean id를 설정하고 이 팩토리빈이 어떤 경로의 xml을 사용할건지, 어떤 dataSource를 참조할건지 입맛에 맞게 사용하면 된다.

 

 

팩토리빈에 밑줄이 쳐진 이유는.. Deprecated 됐기 때문에 해당 메서드가 곧 삭제된 예정이라는 표시다. 스프링 4로 넘어가며 ibatis에 대한 지원이 종료되었기 때문에 전자정부 프레임워크 3.5의 실행환경에는 ibatis를 사용할 수 있도록 실행환경에 추가해놓았기 때문이다.

 

이제 마지막으로 EgovAbstractDAO를 extend할 클래스를 생성한 후 ( 필자는 EgovComMysqlDao.java라고 생성하였다. )

디폴트로 설정되어있는 baen id를 sqlMapclient를 썼지만 본문에는 sqlMapclient2라는 bean id를 생성하였으므로 EgovAbstractDAO를 사용하면 @Resource를 통해 name에 bean id만 생성하여도 sqlMapClient를 쉽게 injection 할 수 있게 편하게 되어있기 때문에 이와 같이 사용함으로서 다중 DB 연동을 할 수 있게 한다.

 

 

요런식으로 name만 써주면 끝.

반응형