요즘 포플 수정 좀 하느라 정신이 없었는데 다행히 수정이 끝났고
이제 다시 프로젝트에 정진하고 있다.
그래서 부족한 점을 보완하고자 했는데 원래 그 프로젝트 진행 방식이
네이버 맵이 뜨면서 내 프로젝트 폴더에 있는 대전 음식점 CSV 파일을 읽어와서 내 위치 주변에 있는 음식점 들만 보이게 해주는 것이었다. 그래서 음식점 찾기를 할때마다 CSV 파일에 연결을 하는건데 이번에 원래 DB 있는데 뒀다 뭐하나 해서
DB 내가 필요한 데이터만 저장하려고 했다.
그래서 구상한것은 일단 음식점 이름, 전화번호, 주소 , 위도 , 경도 그리고 마지막을 메뉴 !!
이 메뉴 땜에 좀 애를 먹었다. 메뉴는 일단 한음식점에서 여러개의 메뉴를 가지게 되니
메뉴라는 테이블을 따로 파서 음식점 테이블과 일대다 관계를 만들어주었다.
@Entity
@Setter
@Getter
public class FoodDatas {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String address;
private String storePhNum;
private double latitude;
private double longitude;
@OneToMany(mappedBy = "foodDatas" , cascade = CascadeType.REMOVE)
private List<Menu> menu;
}
@Entity
@Setter
@Getter
public class Menu {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
private FoodDatas foodDatas;
private String foodName;
}
이런식으로 구성을 해놨다. 근데 가장 큰 문제점이 있었다.....
바로 csv 데이터 가 메뉴 써둔게 2가지 경우라 나뉘었다.
//지금 csv 데이터에 오류?가 있음
//,"[갈비짬뽕,고기짬뽕,숯불고기짬뽕]" 이런 메뉴 데이터가 있고
//,"['갈비짬뽕'; '고기짬뽕'; '숯불고기짬뽕']" 이런 메뉴 데이터가 있다.
//첫번째 경우는 String 변수가 3개이다. , 이게 나올때마다 새로운 String이 나오는거임;;
//2번쨰 경우는 String 변수가 하나의 형태이다.
// 그래서 2개의 경우를 if 문을 통해서 따로 저장하는방식을 달리
//해야 겠다.
이런식이어서 결국
if (datas.get(i).get(11).length() > 3) {
// System.out.println("3글자 이상 메뉴인경우");
if (datas.get(i).get(11).charAt(3) != '\'' &&
datas.get(i).get(11).charAt(0) == '\"') {
//이어진 Stirng 메뉴 찾기 위해
// System.out.println("배열형태 아닌 메뉴 찾기");
int j = 0;//이어진 메뉴 계속 찾으려고 변수 투입
//마지막에 숯불고기짬뽕]" 이것처럼 "이걸로 끝나면 끝나는거니
//while문에 그 조건 넣음
Boolean keep=true;
while (keep) {
// System.out.println("배열형태 아닌 메뉴들에 이어진 메뉴 들 찾기 ");
String b= datas.get(i).get(11 + j);
// System.out.println(b);
menuService.create2(datas.get(i).get(11 + j), foodDatas);
if( datas.get(i).get(11 + j).charAt(datas.get(i).get(11 + j).length() - 1) == '\"'){
keep =false;
}
j++;
//마지막 이 이제 울면]" 이렇게 끝나면 그 메뉴 집합은 끝난거지 while 문이 끝나게하기
}
} else {
// System.out.println("배열형태인 메뉴 찾음 ");
menuService.create(datas.get(i).get(11), foodDatas);
}
} else {
menuService.create(datas.get(i).get(11), foodDatas);
}
이렇게 경우를 나눠서 만들게 되었다.
거의 알고리즘 문제 푸는거 같았다 ㅎ ㅋㅋ
그렇게 해서
2만개가 되는 음식점 데이터를 DB 에 넣었고
7만 개 정도되는 메뉴 테이블을 만들게 되었다. ! ! !
'개인 프로젝트 (DNW)' 카테고리의 다른 글
인덱스 활용, JPA 활용하기 (0) | 2024.03.28 |
---|---|
DNW 프로젝트 , 메뉴 DB 호출하기 , 음식점 저장하기 (1) | 2024.03.19 |
네이버 api, chatgpt api 근황 (0) | 2024.02.12 |
현재 위치 주위에 있는 음식점 마커 뜨게 하기 (0) | 2024.01.15 |
HTML5 Geolocation API 활용하기 (0) | 2024.01.12 |