나는 2023.07.10~2024.01.30 기간동안 내일배움카드로 수강하는 국비지원교육 중 K-digital training(패스트캠퍼스 X 야놀자: 백엔드 개발 부트캠프 4기)에 참여하고 있다.

🌟 두 번째 과제!

지난 주 첫 자바 과제가 끝나고 새로운 자바 과제가 주어졌다. 이번 과제를 마지막으로 자바 과제는 마무리되고, 토이 프로젝트를 시작할 것 같다.

이번 과제는 어떤 내용인지 살펴봤다.

과제2: 책 검색 및 데이터베이스 Java 애플리케이션 개발

이번 과제는 카카오API를 이용해 도서를 검색하고, 데이터베이스에 저장하는 Java 애플리케이션을 개발하라는 내용이었다.

지난 과제와 다른 점은 검색 대상이 도서라는 점과 데이터베이스를 연동해야 한다는 점이다. 웹 개발이 아니므로, JDBC를 이용한 DAO를 작성하기로 했다.

💡 Keypoint

  1. 네트워크API(HttpUrlConnection|HttpClient|OkHttp)를 사용할 수 있는가?
  2. OpenAPI 를 적절히 사용해 필요한 데이터를 받아올 수 있는가?
  3. Json 형태의 응답을 적절히 파싱하여 사용할 수 있는가?
  4. JDBC로 데이터베이스를 연동할 수 있는가?

어떤 네트워크API를 사용할까? 🤔

지난 과제처럼 KakaoAPI를 사용하려면 네트워크API를 사용해야 한다. 마찬가지로 HttpUrlConnection을 사용하기로 했다.

Kakao Developers 💬

지난 과제1 에서 만든 REST API 키를 그대로 사용하기로 했다.

이번 과제가 지난 과제와 다른 점은 도서 검색이라는 점이기 때문에 이에 맞게 요청 URL을 변경하기만 하면 된다.

요구사항 확인 🧐

  • 사용자로부터 검색어를 입력받는다.
  • 카카오API 중 다음 검색 - 책 검색하기 기능을 사용하여 도서를 검색한다.
  • 검색한 도서 정보를 출력하고 데이터베이스에 저장할 것인지 선택한다.
  • 선택에 따라 데이터베이스에 저장하고, 데이터베이스에서 도서 목록을 조회하여 출력한다.

Json 파싱 ⚒️

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를 사용하는 방법은 확실히 생산성과 유지보수 측면에서 아쉬운 점이 많은 것 같다.

이제 과제를 마지막으로 자바 과제는 마무리됐지만, 곧 있을 토이프로젝트를 위해 힘내봐야겠다! 😀

profile
배움 기록

0개의 댓글

Powered by GraphCDN, the GraphQL CDN