I would like to know how to configure and utilize both H2 DB and Oralce DB in a Spring Boot application. Could you provide me with a sample code snippet?
이번에는 ChatGPT 와 구글링을 동시에 진행 해 보면서 내용을 정리하고자 한다. GPT 에게 영어로 질문하는 것이 속도와 데이터 질 측면에서 더 효율적이라는 걸 느낄 수 있었다. 이렇게 영어공부를 더 열심히 해야겠다는 생각이 든다....
제목과 같이 이번에는 H2, ORACLE DB 를 동시에 연동하는 SAMPLE CODE를 진행하고자 한다.
우리가 연결하는 db connection 은 JNDI 기술을 이용한 것, Java Naming Directory Interface. was 에서 해당 클래스를 찾아서 연결하는 것. java application 이 아닌 WAS..Tomcat 에서...Springboot 내부 tomcat 에서 사용하는 것이였네...
# Oracle Database
oracle.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
oracle.datasource.username=your-username
oracle.datasource.password=your-password
oracle.datasource.driver-class-name=oracle.jdbc.OracleDriver
sqlSessionFactory => 단순하게 sqlSession 생성.
sqlSessionTemplate => sqlSession 인터페이스 구현, thread-safe, 트랜잭션 관리 용
** @MybatisTest : mybatis query test 시 유용할듯?
1. DBCP 란?
Database Connection Pool 의 약자이다. 요청이 올때마다 Connection 객체를 얻는 것이 아닌, 미리 일정 갯수 찍어내서 Connection Pool 로 관리하는 것이다. DBCP를 사용치 않으면 아래와 같은 과정을 거친다.
- DB 서버 접속을 위해 JDBC 드라이버를 로드한다.
- DB 접속 정보와 DriverManager.getConnection() Method를 통해 DB Connection 객체를 얻는다.
- Connection 객체로 부터 쿼리를 수행하기 위한 PreparedStatement 객체를 받는다.
- executeQuery를 수행하여 그 결과로 ResultSet 객체를 받아서 데이터를 처리한다.
- 처리가 완료되면 처리에 사용된 리소스들을 close하여 반환한다.
하지만, DBCP 를 사용하면
- WAS가 실행되면서 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 둔다.
- HTTP 요청에 따라 필요할 때 Pool에서 Connection 객체를 가져다 쓰고 반환한다.
이와 같은 방식으로 HTTP 요청 마다 DB Driver를 로드하고 물리적인 연결에 의한 Connection 객체를 생성하는 비용이 줄어들게 된다.