나는 2023.07.10~2024.01.30 기간동안 내일배움카드로 수강하는 국비지원교육 중 K-digital training(패스트캠퍼스 X 야놀자: 백엔드 개발 부트캠프 4기)에 참여하고 있다.
지난 주 첫 자바 과제가 끝나고 새로운 자바 과제가 주어졌다. 이번 과제를 마지막으로 자바 과제는 마무리되고, 토이 프로젝트를 시작할 것 같다.
이번 과제는 어떤 내용인지 살펴봤다.
이번 과제는 카카오API를 이용해 도서를 검색하고, 데이터베이스에 저장하는 Java 애플리케이션을 개발하라는 내용이었다.
지난 과제와 다른 점은 검색 대상이 도서라는 점과 데이터베이스를 연동해야 한다는 점이다. 웹 개발이 아니므로, JDBC를 이용한 DAO를 작성하기로 했다.
💡 Keypoint
- 네트워크API(
HttpUrlConnection
|HttpClient
|OkHttp
)를 사용할 수 있는가?OpenAPI
를 적절히 사용해 필요한 데이터를 받아올 수 있는가?Json
형태의 응답을 적절히 파싱하여 사용할 수 있는가?JDBC
로 데이터베이스를 연동할 수 있는가?
지난 과제처럼 KakaoAPI를 사용하려면 네트워크API를 사용해야 한다. 마찬가지로 HttpUrlConnection을 사용하기로 했다.
지난 과제1 에서 만든 REST API 키를 그대로 사용하기로 했다.
이번 과제가 지난 과제와 다른 점은 도서 검색이라는 점이기 때문에 이에 맞게 요청 URL을 변경하기만 하면 된다.
Json으로 받은 응답을 Java 어플리케이션에서 파싱을 통해 BookDTO에 담아 출력하고자 한다.
지난 과제에서 사용한 org.json:json을 그대로 사용했다.
implementation 'org.json:json:20230227'
데이터베이스 연동 전 테이블은 다음과 같이 생성했다.
create table book(
id int not null auto_increment,
title varchar(50) not null,
price int not null,
company varchar(50) not null,
authors varchar(50) not null,
sale_price int not null,
isbn long not null,
primary key(id)
);
JDBC와 MySQL을 사용하기 위해 관련 API가 필요했다.
다음과 같이 의존성을 추가했다.
implementation 'mysql:mysql-connector-java:8.0.33'
편의를 위해 롬복을 사용해 전체 의존성 설정은 다음과 같다.
dependencies {
implementation 'org.json:json:20230227'
implementation 'mysql:mysql-connector-java:8.0.33'
compileOnly 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
}
이후 BookDAO 클래스에 저장 기능과 조회 기능을 구현했다.
1
- 도서를 검색할 검색어를 입력 받는다.
2
- 네트워크API를 통해 카카오API에 요청을 보내고 도서 정보를 받아온다.
3
- 응답 받은 Json을 잘 받아와서 출력한다.
4
- 데이터베이스에 저장할 것인지 선택 받는다.
5
- JDBC를 이용한 DAO를 통해 검색 결과를 데이터베이스에 저장한다.
6
- 데이터베이스에서 도서 정보를 조회하고 출력한다.
다음은 입출력 결과이다.
도서 검색과 데이터베이스 저장 및 조회가 성공적으로 수행된 것을 확인할 수 있었다! 😀
이번 자바 과제2를 수행하면서 JDBC를 이용해 데이터베이스를 연동해봤다.
스프링으로 들어가면 사실 MyBatis나 JPA를 사용하기 때문에 JDBC를 사용할 일은 거의 없지만, 이번 기회에 MyBatis나 JPA를 사용할 이유에 대해 한 번 더 생각해 볼 수 있었던 것 같다.
JDBC를 사용하는 방법은 확실히 생산성과 유지보수 측면에서 아쉬운 점이 많은 것 같다.
이제 과제를 마지막으로 자바 과제는 마무리됐지만, 곧 있을 토이프로젝트를 위해 힘내봐야겠다! 😀