Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions demo/src/main/java/com/example/demo/entity/Transaction.java
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
@@ -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<Transaction, Long> {
}
44 changes: 44 additions & 0 deletions demo/src/main/java/com/example/demo/service/CsvImportService.java
Original file line number Diff line number Diff line change
@@ -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(); }
}
}
3 changes: 3 additions & 0 deletions demo/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions demo/src/main/resources/transactions.csv
Original file line number Diff line number Diff line change
@@ -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