240627
오늘의 학습
● 1. H2 Database 사용 방식 3가지
● 2. JDBC
H2 Database 사용 방식 3가지
H2 Database는 Server Mode, In-memory Mode, Embeded Mode 세 가지 방식으로 사용할 수 있다.
1. ServerMode
직접 H2 Database엔진을 설치하여 사용하는 방식으로, 애플리케이션과 상관 없이 외부에서 DB 엔진이 따로 구동이 된다.
데이터가 애플리케이션 외부에 저장이 되므로 애플리케이션을 종료해도 데이터가 사라지지 않는다. ( 서버 방식 )
2. In-memory Mode
엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용하는 방식으로, 애플리케이션을 실행하면 DB 엔진이 함께 실행되고 애플리케이션을 종료하면 DB엔진 또한 함께 종료된다. 데이터가 애플리케이션의 메모리에 저장되기 때문에 애플리케이션의 종료에 따라 데이터가 같이 사라지게 된다. ( 인메모리 방식 )
3. Embedded Mode
In-memory Mode와 동일하게 엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용하는 방식으로, 애플리케이션을 실행하면 DB엔진이 함께 실행되고 마찬가지로 애플리케이션을 종료할 때 DB엔진 또한 함께 종료 된다.
하지만, 임베디드 모드의 특징으로는 데이터가 애플리케이션 외부에 저장이 되므로 애플리케이션을 종료해도 데이터는 사라지지 않는다. ( 임베디드 방식 => 개발 단계에서 많이 사용이 된다. )
JDBC( Java Database Connectivity )
Java Database Connectivity의 약자로 말그대로 Java 애플리케이션과 Database를 연결해주는 API이다.
API 즉, 표준 명세이며 인터페이스라는 의미이다. 그럼 해당 JDBC API를 구현하는 클래스들은 무엇이냐 하면 각각의 데이터베이스의 Driver이다. 즉, 구현체인 해당 Driver를 통해 실제 DB와 연결이 되며 애플리케이션과 DB는 통신을 하게 된다.
1. JDBC API
데이터베이스 연결 및 쿼리 실행 등 다양한 인터페이스 클래스들을 지원을 한다. ( Driver 인터페이스 포함 )
2. JDBC Driver => Oracle Driver, MySQL Driver, H2 Drvier 등 매우 다양함.
다양한 데이터베이스의 드라이버가 존재하며, 해당 드라이버는 JDBC API 인터페이스를 구현하고있는 구현체이다.
연결 및 쿼리 실행 등 DB마다 방식이 다르므로 인터페이스를 구현해 메서드를 클래스와 메서드를 맞추고 내부 로직은
각 DB마다 다를 수 있다.
Database의 여러 회사들은 각각 쿼리 실행 연결 등 DB마다 특성이 다르기 때문에 이를 맞추기 위해 Java와 자 회사는 DB 연결을 위해 Java에서는 JDBC API라는 표준 명세(인터페이스)를 제공을 해주며, DB회사들은 해당 JDBC API 인터페이스를 구현하는 구현체를 만들게되어 DB를 바꾸게 되어도 문제없이 잘 동작한다. 즉, JDBC API는 확장성이 좋다.
참고 : 자바 애플리케이션의 내부 설정으로 보면 build.gradle에 추가하는 DB 의존성에는 JDBC 구현체가 들어있다.
3. 드라이버의 동작 방식
1. 연결 초기화
- 1. 요청 수신
- 애플리케이션은 데이터베이스 작업을 시작하기 위해 드라이버에 연결을 요청한다.
- 2. 연결 설정
- 드라이버는 데이터베이스 서버에 로그인하고 필요한 설정을 수행하여 연결을 완료한다.
- ( 과정은 네트워크 정보 및 데이터베이스 아이디 패스워드 등을 통해 이루어진다. )
2. SQL 전송 및 실행
- 1. SQL 명령 변환
- 애플리케이션 요청에 담긴 쿼리문을 드라이버는 해당 DB가 이해할 수 있는 형태로 변환을 해준다.
- 2. 명령 처리
- 변환된 명령은 DB 서버로 전송되어 실행이 된다. DB는 쿼리를 처리하고 요구된 데이터 검색 및 DB 반영 등 변화를 줌
3. 결과 처리
- 1. 결과 수신
- DB에서 작업의 결과를 보내면, 드라이버는 이 결과를 받아 애플리케이션에서 해석할 수 있는 형태로 변환한다.
- 2. 결과 전달
- 최종적으로, 드라이버는 이 결과를 애플리케이션에 전달을 하게 된다.
4. 연결 종료
- 1. 연결 해제
- 작업이 완료되면, 드라이버는 DB서버와의 연결을 종료하게 된다. ( 원래는 close를 통해 수동으로 해줘야 했음 )
회고
JDBC에 어느정도 깊이 학습을 했으며, H2 DB를 한번도 사용을 안해봤었는데 이번 기회에 사용을 할 수 있어서 좋았다.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 52일차 TIL - AWS(2) EC2 (0) | 2024.07.01 |
---|---|
내일배움캠프 51일차 TIL - AWS(1) (0) | 2024.06.28 |
내일배움캠프 49일차 TIL - Spring Security 필터 순서에 따른 인가 문제 (0) | 2024.06.26 |
내일배움캠프 48일차 TIL - 아웃소싱 프로젝트[KPT회고] (0) | 2024.06.25 |
내일배움캠프 42일차 TIL - 톰캣, 서블릿 (0) | 2024.06.17 |