728x90
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 |