본문 바로가기
Backend/Servlet & JSP

[오픈 API ②] 데이터 DB에 저장하기 (웹 개발 / 백엔드 / JSON / JSP / servlet / API / Gson)

by 비전공자 기록광 2021. 3. 27.
반응형

공공데이터 오픈 API를 저장해 가져와 데이터를 화면에 띄우는 실습을 해봤고 이번에는 그 데이터를 DB에 저장 연동하는 실습을 해보려한다.

 

▶ 공공데이터 오픈 API 데이터 화면에 띄우기

2021.03.21 - [IT 독학/WEB] - [오픈 API ①] 데이터 불러오기 (웹 개발 / 백엔드 / JSON / JSP / servlet / API / Gson)

 

[오픈 API ①] 데이터 불러오기 (웹 개발 / 백엔드 / JSON / JSP / servlet / API / Gson)

우리가 뭔가를 만들고자 할때 필요한 데이터들이 있다. 데이터를 직접 크롤링 하는 건 많은 돈과 노력 시간이 든다. 그럴때 찾는게 무료데이터, 공공데이터가 있다. 공공데이터포털 (data.go.kr) 공

datamoney.tistory.com

 

 

1. DB 준비

lib.sql

 

우리가 쓸, 화면에 불러올 정보들만 담을 테이블을 만들어준다.

 

중요한건 받아올 데이터의 타입에 따라 만들어줘야한다.

도서관번호라고 해서 int 타입일줄 알았지만 아니었다.

 

JDBC를 쓰기 위해 몇가지 준비를 해줬다. 

 

▷ JDBC 관련 참고

2021.02.03 - [IT 독학/WEB] - JDBC ( JDBC 실습 / Java DB api / Java DB 연결 / JDBCTemplate / 웹개발 / 웹기초 / 웹독학 / 백엔드 개발자 / 프로그래밍)

 

 

LibDto.java

dto를 만들어줬다. 생성자와 getter&setter를 만들어줬다.

 

LibDao.java

미리 dao도 만들어준다. 

 

 

2. DB 저장 버튼 만들기

 

liblist.jsp에 listdb 이란 이름의 'db에 데이터 저장하기' 요청을 보내준다.

 

lib01.js 에도 input 태그를 통해 db에 value값을 넘겨줄 준비를 한다. 이 input 이름은 lib로 지정했다.

<td>의 값들을 일단 '/'로 나눠 넘겨주고 나중에 split해줘서 값만 갖게 할 수 있다. 

 

libServlet.java 에서 listdb 요청을 받아준다. 

버튼을 누를때마다 같은 데이터를 db에 저장할 수 있으니 미리 dao에 delete( ) 메소드를 실행해준다.

 

dao에 delete( )메소드를 만들어준다.

JDBCTemplate을 상속받아줬고 db 연결, 쿼리문 준비, 실행도 해줬다.

 

그리고 lib01.js에서 보내준 여러개의 lib 파라미터들을 배열로 만들어 받아줬다.

그리고 받아온 values는 '/' 기준으로 잘라 그 잘라준 하나하나를 dto 객체에 담아주고 또 dto들이 모여 dtos라는 이름의  List 배열로 만들어 관리해줬다. 

이렇게 모인 dtos를 dao의 insert( )메소드를 실행해 db에 넣어준다.

 

dao에서 insert( )메소드를 작성해준다. db를 연결하고 insert 쿼리를 작성했다. 여기서 for문을 이용해 쿼리문에 하나씩  dto값들을 추가해준다. 그리고 쿼리문을 한번에 실행하는 Batch에 담아줬다. 

 

batch를 통해 모든 쿼리문을 한번에 실행해주고 그 결과 값을 result에 담아줬다.

우리가 위에서 차곡차곡 담은 쿼리문이 모두 실행 성공했는지 알아보기 위해 for문으로 결과 값 개수를 비교해준다.

 

Oracle 기준으로 exeuteBatch( )에서 성공이면 -2 실패면 -3의 값이 리턴된다.

 

 

다시 libServlet.java에 가서 리턴받은 res가 dtos와 같으면 성공 알림을, 아니라면 실패 알림을 보낸다.

 

여기까지가 끝이고 이제 잘 들어갔는지 확인을 해보면 된다.

 

먼저 테이블에 아무것도 들어있지 않은걸 확인하고 바로 실행을 해본다.

 

 

db 저장 버튼을 눌러주고 저장 성공 알림까지 뜨는데 과연 실제로도 잘 들어갔는지 확인해본다.

 

 

 

이렇게 잘 들어간걸 볼 수 있다.

총 1453개의 서울 도서관 정보가 내 db에 저장된 걸 볼 수 있다.

반응형

댓글