지역(zone)도 역시 밸류가 아닌 엔티티!
Zone
- City (영문 도시 이름)
- LocalNameOfCity (한국어 도시 이름)
- Province (주 이름, nullable)
Account와 Zone의 객체 지향적인 관계
Account와 Zone의 관계형 관계
지역 데이터 초기화
- 위키 피디아 데이터 참조
- https://en.wikipedia.org/wiki/List_of_cities_in_South_Korea
- 데이터를 CVS로 옮기고 초기화 하기
List of cities in South Korea - Wikipedia
This article is about cities in the country generally. For places that are administratively designated specifically as "city", see List of cities of South Korea. Wikimedia list article Special city Metropolitan autonomous city Metropolitan cities S
en.wikipedia.org
Zone 엔티티 생성
package me.weekbelt.studyolle.domain;
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Zone {
@Id @GeneratedValue
private Long id;
@Column(nullable = false)
private String city;
@Column(nullable = false)
private String localNameOfCity;
@Column(nullable = true)
private String province;
}
zone데이타를 위키피디아에서 복사해서 google 스프레드시트로 복사후 csv파일로 저장
저장한 zones_kr.csv를 resoucres폴더 아래에 둔다.
ZoneRepository생성
package me.weekbelt.studyolle.zone;
public interface ZoneRepository extends JpaRepository<Zone, Long> {
}
도시정보 데이터를 서비스계층에서 저장하기위해 ZoneService생성
package me.weekbelt.studyolle.zone;
@RequiredArgsConstructor
@Transactional
@Service
public class ZoneService {
private final ZoneRepository zoneRepository;
@PostConstruct // ZoneService 빈이 만들어진 이후에 실행되는 지점
public void initZoneData() throws IOException {
if (zoneRepository.count() == 0) {
Resource resource = new ClassPathResource("zones_kr.csv");
List<Zone> zoneList = Files.readAllLines(resource.getFile().toPath(), StandardCharsets.UTF_8)
.stream().map(line -> {
String[] split = line.split(",");
return Zone.builder()
.city(split[0])
.localNameOfCity(split[1])
.province(split[2])
.build();
}).collect(Collectors.toList());
zoneRepository.saveAll(zoneList);
}
}
}
참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#
스프링과 JPA 기반 웹 애플리케이션 개발 - 인프런
이 강좌에서 여러분은 실제로 운영 중인 서비스를 스프링, JPA 그리고 타임리프를 비롯한 여러 자바 기반의 여러 오픈 소스 기술을 사용하여 웹 애플리케이션을 개발하는 과정을 학습할 수 있습니다. 이 강좌를 충분히 학습한다면 여러분 만의 웹 서비스를 만들거나 취직에 도움이 될만한 포트폴리오를 만들 수 있을 겁니다. 활용 웹 개발 프레임워크 및 라이브러리 Java Spring Spring Boot Spring Data JPA Thymeleaf 온라인 강의 스
www.inflearn.com
'스프링과 JPA 기반 웹 어플리케이션 개발 > 2부(관심 주제와 지역 정보)' 카테고리의 다른 글
41. 지역 정보 테스트 코드 (0) | 2020.04.23 |
---|---|
40. 지역 정보 추가 삭제 (0) | 2020.04.23 |
38. 관심 주제 테스트 (0) | 2020.04.23 |
37. 관심 주제 자동완성 (0) | 2020.04.22 |
36. 관심 주제 삭제 (0) | 2020.04.22 |