diff --git a/demo/src/main/java/com/example/demo/entity/Transaction.java b/demo/src/main/java/com/example/demo/entity/Transaction.java new file mode 100644 index 0000000..b4f2ee6 --- /dev/null +++ b/demo/src/main/java/com/example/demo/entity/Transaction.java @@ -0,0 +1,27 @@ +package com.example.demo.entity; + +import jakarta.persistence.*; +import lombok.*; + +@Entity +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Transaction { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String gu; + private String dong; + private String road; + private String houseType; + private Double totalArea; + private Double landArea; + private Integer buildYear; + private Integer tradeYear; + private Integer tradeMonth; + private Integer tradeDay; + private Long price; +} diff --git a/demo/src/main/java/com/example/demo/repository/TransactionRepository.java b/demo/src/main/java/com/example/demo/repository/TransactionRepository.java new file mode 100644 index 0000000..ecabe70 --- /dev/null +++ b/demo/src/main/java/com/example/demo/repository/TransactionRepository.java @@ -0,0 +1,9 @@ +package com.example.demo.repository; + +import com.example.demo.entity.Transaction; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface TransactionRepository extends JpaRepository { +} diff --git a/demo/src/main/java/com/example/demo/service/CsvImportService.java b/demo/src/main/java/com/example/demo/service/CsvImportService.java new file mode 100644 index 0000000..8210977 --- /dev/null +++ b/demo/src/main/java/com/example/demo/service/CsvImportService.java @@ -0,0 +1,44 @@ +package com.example.demo.service; + +import com.example.demo.entity.Transaction; +import com.example.demo.repository.TransactionRepository; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import org.springframework.core.io.ClassPathResource; +import org.springframework.stereotype.Service; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + +@Service +@RequiredArgsConstructor +public class CsvImportService { + private final TransactionRepository transactionRepository; + + @PostConstruct + public void init() { + try { + ClassPathResource resource = new ClassPathResource("transactions.csv"); + BufferedReader reader = new BufferedReader( + new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8) + ); + reader.readLine(); + String line; + while ((line = reader.readLine()) != null) { + String[] s = line.split(","); + Transaction t = Transaction.builder() + .gu(s[0]).dong(s[1]).road(s[2]).houseType(s[3]) + .totalArea(Double.parseDouble(s[4])) + .landArea(Double.parseDouble(s[5])) + .buildYear(Integer.parseInt(s[6])) + .tradeYear(Integer.parseInt(s[7])) + .tradeMonth(Integer.parseInt(s[8])) + .tradeDay(Integer.parseInt(s[9])) + .price(Long.parseLong(s[10])) + .build(); + transactionRepository.save(t); + } + System.out.println("✅ DB 적재 완료!"); + } catch (Exception e) { e.printStackTrace(); } + } +} diff --git a/demo/src/main/resources/application.properties b/demo/src/main/resources/application.properties index 2109a44..c83eb59 100644 --- a/demo/src/main/resources/application.properties +++ b/demo/src/main/resources/application.properties @@ -1 +1,4 @@ spring.application.name=demo +spring.datasource.url=jdbc:h2:mem:testdb +spring.h2.console.enabled=true +spring.jpa.hibernate.ddl-auto=create diff --git a/demo/src/main/resources/transactions.csv b/demo/src/main/resources/transactions.csv new file mode 100644 index 0000000..de1d526 --- /dev/null +++ b/demo/src/main/resources/transactions.csv @@ -0,0 +1,3 @@ +gu,dong,road,houseType,totalArea,landArea,buildYear,tradeYear,tradeMonth,tradeDay,price +수지구,풍덕천동,수지로,다가구,84,120,2010,2025,5,10,52000 +기흥구,신갈동,신갈로,아파트,59,0,2005,2025,5,11,41000