Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- NIO
- 웹 크롤링
- spring data jpa
- android
- Database
- JVM
- 인프라
- jpa
- 역학
- 코틀린
- GPT-4's answer
- oracle
- chatGPT's answer
- write by GPT-4
- python
- 자바암호
- Java
- 자바네트워크
- 리눅스
- 고전역학
- 파이썬
- 데이터베이스
- 시스템
- 소프트웨어공학
- flet
- kotlin
- write by chatGPT
- Spring boot
- 자바
- 유닉스
Archives
- Today
- Total
Akashic Records
Spring Batch, Excel ItemReader로 읽어서 JPA ItemWriter 쓰기 본문
Spring.io
Spring Batch, Excel ItemReader로 읽어서 JPA ItemWriter 쓰기
Andrew's Akashic Records 2023. 4. 21. 15:31728x90
Spring Batch를 사용하여 Excel 파일을 읽어와서 JPA를 이용하여 저장하는 예제입니다. 이 예제에서는 JpaRepository를 사용하여 데이터를 저장합니다.
먼저, 엔티티 클래스와 JpaRepository 인터페이스를 생성합니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// 생성자, getter, setter 등
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
그 다음, `ExcelUserReader` 빈을 생성하여 Excel 파일에서 사용자 데이터를 읽어옵니다.
@Bean
public ItemReader<User> excelUserReader() {
PoiItemReader<User> reader = new PoiItemReader<>();
reader.setResource(new ClassPathResource("path/to/your/excel/file.xlsx"));
reader.setRowMapper(userExcelRowMapper());
return reader;
}
private RowMapper<User> userExcelRowMapper() {
return (RowSet rs) -> {
User user = new User();
user.setUsername(rs.getColumnValue(0));
user.setEmail(rs.getColumnValue(1));
return user;
};
}
`UserProcessor`를 생성하여 필요한 경우 데이터를 가공합니다.
public class UserProcessor implements ItemProcessor<User, User> {
@Override
public User process(User user) throws Exception {
// 데이터 가공 (예: 유효성 검사, 변환 등)
return user;
}
}
데이터를 저장하기 위해 `UserWriter`를 생성합니다. 이 때 `UserRepository`를 사용합니다.
public class UserWriter implements ItemWriter<User> {
private final UserRepository userRepository;
public UserWriter(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public void write(List<? extends User> users) throws Exception {
userRepository.saveAll(users);
}
}
마지막으로, Spring Batch Job 설정을 완료합니다.
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
// ... JobBuilderFactory, StepBuilderFactory, UserRepository를 주입받습니다.
@Bean
public Job importUserJob() {
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.flow(step1())
.end()
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<User, User>chunk(10)
.reader(excelUserReader())
.processor(userProcessor())
.writer(userWriter())
.build();
}
// ... ExcelUserReader, UserProcessor, UserWriter 빈 정의
}
이제 Spring Batch Job을 실행하면 Excel 파일에서 사용자 데이터를 읽어와 JPA를 사용하여 데이터베이스에 저장할 수 있습니다.
728x90
'Spring.io' 카테고리의 다른 글
Spring Boot Mail Starter (0) | 2023.04.25 |
---|---|
How to run Spring Boot application unpack-jar (0) | 2023.04.25 |
Spring Batch DataBase 설정 (0) | 2023.04.21 |
Spring Batch SFTP SSH ItemReader, ItemWriter (0) | 2023.04.17 |
Spring Boot Filter 사용법 (0) | 2023.04.15 |
Comments