2024. 9. 27. 20:20ㆍ내일배움캠프
다행이(?) JDBC 를 적용한 개발이 잘 풀려 '일정 생성(CRUD 中 - create)' 에 대한 구현을 마칠 수 있었다. 그래서 이전에 못한 Spring 과 DB 의 연결이 잘 되었는지 확인할 수 있었는데, 이번 게시글에는 어떻게 DB 를 Spring 과 연동했고 구현한 ' 일정 생성' 기능이 어떻게 동작되는지 작성할 생각이다. 이번에 작성된 프로젝트 내용은 여기서 확인 할 수 있다.
1. application.properties
# MySQL 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# DB Source URL
spring.datasource.url=jdbc:mysql://localhost:3306/schedule_management
# DB 계정이름 및 비밀번호
spring.datasource.username='계정이름'
spring.datasource.password='비밀번호'
뭐 이런 내용은 널리고 널렸으니 JDBC 에 대해서 좀 더 이야기하자면, 일단 이번 과제의 기본 요구사항에 'JDBC 를 활용한~' 이란 내용이 있긴하지만 사실 해당 요구사항이 없어도 JDBC 는 반드시 필요한 존재이다.
애플리케이션과 DB 사이의 연결방식과 요청, 응답에 대한 방식은 DB 별로 전부 다르다. 그래서 JDBC 이전에는 DB 를 바꾸는 것은 최후의 방법일 만큼 꺼리는 것이었다고 한다. 하지만 'JDBC(Java Database Connectivity) 표준 인터페이스' 가 등장하며 이러한 문제가 해결되었다. JDBC 는 앞서 말한 애플리케이션과 DB 사이의 연결, 요청, 응답에 대한 3가지 기능을 '표준 인터페이스' 로 제공하므로 DB 에 맞는 적절한 DB Driver 만 있다면 보다 쉽게 DB 를 변경할 수 있게 한다.
다시 한 번 위의 문서를 보면 이제는 'spring.datasource.driver~' 부분을 왜 작성하고 'MySQL 설정' 이란 주석을 달았는지 알 수 있을 것이다. 해당 부분을 작성하므로써 우리는 'MySQL' 과 소통(?) 할 수 있는 소통 창구를 마련한 셈이다.
2. 일정 생성 API 테스트
일단 구현한 내용에 대해 줄줄이 적는 것 보다는 구현한 기능의 API 테스트를 통해 구현 기능 테스트와 애플리케이션, DB 간 연결이 잘 되어 있는지 한 번에 확인하는 내용을 작성하기로 했다. 구현 내용에 대한 부분은 최상단에 프로젝트 내용을 확인할 수 있는 링크를 걸어 두었으니 해당 링크를 통해 확인하길 바란다. API 요청에 대한 테스트는 'Postman' 을 통해 진행하였다.
일단 미리 작성해둔(약간 수정을 하긴함) 'API 명세서' 를 보면 애플리케이션 서버는 '할 일, 작성자 이름, 비밀번호' 정보를 받아 일정에 대한 정보(Entity)를 DB 에 저장한 뒤, 응답할 때 저장된 데이터 중 'id(일정 ID), 할 일, 작성자 이름, 작성일' 정보를 함께 전달해 주어야 한다.
초록색 박스 안의 정보와 함께 API 요청을 할 때 빨간색 박스안의 결과를 애플리케이션이 응답한 것이다. 위에서 말한 대로 생성된 일정의 'id, body(할일), author(작정자 이름), createAt(작성일)' 정보를 반환 받았다. 또한 정상적인 응답 상태(HttpStatus)를 '201 Created(정상 생성?)' 으로 설정해 두었기 때문에 Status 가 '201 Created' 인 것도 확인할 수 있다. 그럼 DB 는 어떨까?
이전에 구현된 것이 없어 IntelliJ 를 DB 와 연결해 두었는데, 연결해두면 이렇게 MySQL Command line Client 나 MySQL Workbench 를 통하지 않고도 IntelliJ 내에서 현재 연결된 DB 의 상태를 확인할 수 있다. 테스트를 진행하며 테이블에 레코드가 쌓였지만 'id' 값이 '6' 인 레코드가 확인되므로 DB 에 요청으로 인해 생성된 일정이 잘 저장됬음을 확인할 수 있다.
'내일배움캠프' 카테고리의 다른 글
[내일배움캠프] TIL - 24.09.30(월) (0) | 2024.09.30 |
---|---|
[내일배움캠프] TIL - 24.09.27(금) (0) | 2024.09.27 |
[내일배움캠프] 일정 관리 앱 - DB 세팅 (0) | 2024.09.27 |
[내일배움캠프] TIL - 24.09.26(목) (0) | 2024.09.26 |
[스탠다드반] 스타크래프트 유닛 - 객체화 & 캡슐화 (0) | 2024.09.25 |