16주차 - Spring (16) json 파일의 내용을 데이터베이스에 저장해보자

2022. 10. 24. 15:36Spring framwork

이번의 목표

01. json 파일의 내용을 데이터베이스에 저장해보자


지난시간까지는 디스크에 있는 JSON파일을 AJAX를 이용하여 값을 불러오고 검색하는 기능을 구현해봤습니다.

이번에는 json파일을 데이터베이스에 저장하는 방법에 대해 공부해보겠습니다.

다음 시간에는 이를 바탕으로 데이터베이스와 연결하여 검색어에 따른 출력이 바뀌도록 해보겠습니다.

 

원래는 바로 데이터베이스와 연결하려 했는데, 지금까지 배운것들을 응용해보기 위해서 이번에는 json파일을 읽고 이를 데이터베이스 저장하는 코드를 작성해보겠습니다.

 

데이터베이스의 컬럼으로는 ttitle, artist, price를 만들었습니다.

DAO의 insrt에는 데이터베이스에 저장하는 쿼리문을 작성해두었습니다.

이번에 공부하면서 주의깊게 확인했던 부분은 getAsString()과 toString()의 차이였습니다.

JsonObject를 사용하면서 쓸 수 있는 메서드인 toString, getAsString은 둘다 이름처럼 String 자료형으로 값을 반환합니다.

이때, JsonObject의 코드가 만약 {"test":"test"} 일때, toString()은 "test"를 반환하고 getAsString()은 test를 반환하기 때문에 이 부분을 주의해야했습니다.

 

코드는 아래와 같습니다.

	public int insert() throws FileNotFoundException, IOException {
		ClassPathResource resource = new ClassPathResource("ex05.json");
		FileReader reader = new FileReader(resource.getFile());
		
		Gson gson = new Gson();
		JsonObject obj = gson.fromJson(reader, JsonObject.class);
		JsonArray array = obj.get("cd").getAsJsonArray();
		// "cd"의 값을 array로 받아 저장.
		
		
		// 데이터베이스에는 쌍따옴표가 없는 상태로 저장을 해야하기 때문에 toString()이 아닌 getAsString()을 사용.
		for(int i =0;i<array.size();i++) {
			JsonObject o = array.get(i).getAsJsonObject();
			AjaxDTO dto = new AjaxDTO();
			dto.setTitle(o.get("title").getAsString());
			dto.setArtist(o.get("artist").getAsString());
			dto.setPrice(o.get("price").getAsString());
			
			int result = repo.insert(dto);
			if(result==0) {
				return 1;
			}
		}
		return 0;
	}

 

① 데이터베이스에 저장하기 위해서 toString이 아닌 getAsString()을 사용하는 부분을 주의해야겠습니다.