0. 들어가기
두번째 자바 과제는 책 검색 및 데이터베이스 Java 애플리케이션 개발이다.
이 프로그램은 Kakao Book Open API를 활용하여 책을 검색하고, 검색한 책 데이터들을 데이터베이스에 저장하고 출력해 보는 기능을 제공한다.
0.1 문제 설명
첫 과제에 이어 한번 더 REST-API 사용해 보는 과제가 나왔다.
Kakao의 Open API를 활용해서 값을 받아와 변환하는 부분은 동일하다.
거기에 MySQL을 활용하여 DB를 연결하고 저장, 조회하는 기능해 보는 것이 익혀야 하는 목록이 되겠다.
첫 과제에서 해결한 것과 동일한 내용인 HTTP연결, JSON 다루기는 넘어가고 MySQL을 사용하는 DB 연결과 다루기를 주요하게 기록해 보려고 한다.
1. 클래스 구조
먼저 main함수가 진행되는 부분은 Client로 하고, HTTP 방식으로 Open API 요청하여 응답하는 APIRequester패키지, Book클래스와 MySQL DB에 Book 저장과 조회를 담당하는 BookDAO가 있는 model 패키지,
사용자로부터 요청값을 받는 InputManager 클래스, 응답 JSON을 파싱하는 JSONArraryManager가 있다.
1.1 의존성
maven의 pom.xml통해 관리
- httpclient version 4.5.13
- json version 20210307
- mysql-connector-java version 8.0.28
- lombok version 1.18.24
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. Java에서 DB에 연결하고 저장,조회(MySQL)
RDBMS인 MySQL을 사용하기로 결정하였다. 이는 가장 대중적이면서 무료이기 때문이다.
2.1 Book 클래스(MySQL의 bookTbl)
책을 검색해 결과를 받아오고, 책을 저장하고 조회하는 프로그램이기 때문에, 책 객체를 설계하는 Book 클래스를 만들었다. 이는 MySQL에서는 테이블로 관리되는데, 이름은 bookTbl이라고 붙였다. Tbl은 테이블이다.
*MySQL은 대소문자를 구분하지 않는다. 다만 코드에서 개발자 자신의 가시성 향상을 위해 카멜 표기법을 그대로 사용하였다.
코드를 먼저 보자
package model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
private int num;
private String title;
private int price;
private String publisher;
private String author;
private int salePrice;
private String isbn;
@Override
public String toString() {
return title + "\t" + price + "\t" + publisher + "\t" + author + "\t" + salePrice + "\t" + isbn;
}
}
lombok 라이브러리를 import해 사용하였는데, 이 라이브러리를 통해 반복적으로 작성하는 코드를 쉽게 사용할 수 있다.
@Getter를 통해 멤버변수들의 getter method를 사용하는 등의 방식인데, @Data는 종합 선물세트다.
@Getter와 @Setter, @EqualsAndHashCode, @ToString 등이 포함되어 있다.
@NoArgsConstructor를 통해 매개변수 없는 기본 생성자를 만들고,
@AllArgsConstructor를 통해 모든 필드에 대한 생성자를 만들 수 있다.
2.2 DB를 다루는 BookDAO 클래스
f
3. 결과 화면
1. 테이블이 없을 때 생성하고, 저장도 하지 않았을 때 빈 테이블의 출력화면
2. 빈 테이블에서 저장을 선택했을 때 DB에 저장하고 제목 오름차순으로 전체 조회하기.
3. 테이블에 데이터가 존재하는 상황에서 DB로 저장하고, 제목 오름차순으로 정렬하여 전체 조회하기.
마무리
참고
위치기반 장소 검색 Java 애플리케이션 개발1 [야놀자X패스트캠퍼스 백엔드 개발 부트캠프]
0. 들어가기 위치기반 장소 검색 Java 애플리케이션 개발이라는 부트캠프의 첫 Java과제가 나왔다. 나의 첫 과제를 해결한 과정을 소개해 보겠다. 0.1 문제 설명 우선 이 과제를 통해 필수적으로 익
pabu.tistory.com
위치기반 장소 검색 Java 애플리케이션 개발1.1 리펙터링
위치기반 장소 검색 Java 애플리케이션 개발1.1 리펙터링 [야놀자X패스트캠퍼스 백엔드 개발 부트
0. 들어가기 절차지향적으로 한번에 만들었던 코드들을 객체지향적으로 리펙터링 해보자. 우선 기본적인 사항을 피드백 받았는데, 이를 5개로 정리해 보았다. 1. 코드의 가독성이 너무 떨어졌다.
pabu.tistory.com