Spring Batch 에러 잡아보기
코드 다 지우고 처음부터 다시 시작해보기
Case_1 : jpa 활용 방식?
- BookEntityManagerFactoryConfiguration 생성
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "BookEntityManagerFactory", basePackages = {"study.godokprac.book.repository"})
class BookEntityManagerFactoryConfiguration {
@Autowired
@Qualifier("BookDataSource")
private DataSource BookDataSource;
@Primary
@Bean(name = "BookEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean BookEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(BookDataSource)
.packages("study.godokprac.book.entity")
.persistenceUnit("Book")
.build();
}
}
- DataSourceProperties 생성
@Configuration
@EnableConfigurationProperties
public class DataSourceProperties {
@Primary
@Bean(name = "BookDataSource")
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public DataSource BookDatasource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
}
- JobConfiguration 생성
@RequiredArgsConstructor
@Configuration
public class InventoryJobConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Autowired
@Qualifier("BookEntityManagerFactory")
private EntityManagerFactory BookEntityManagerFactory;
private int chunkSize;
@Value("${chunkSize:1000}")
public void setChunkSize(int chunkSize) {
this.chunkSize = chunkSize;
}
@Bean
public Job inventoryJob() {
return jobBuilderFactory.get("inventoryJob")
.start(inventoryStep())
.build();
}
@Bean
public Step inventoryStep() {
return stepBuilderFactory.get("inventoryStep")
.transactionManager(new JpaTransactionManager(BookEntityManagerFactory))
.<Book, Book>chunk(chunkSize)
.reader(reader())
.processor(Processor())
.writer(Writer())
.build();
}
@Bean
public ItemReader<Book> reader() {
return new JpaPagingItemReaderBuilder<Book>()
.name("reader")
.entityManagerFactory(BookEntityManagerFactory)
.pageSize(chunkSize)
.queryString("SELECT t FROM testbook t WHERE t.inventory = 5")
.build();
}
@Bean
public ItemProcessor<Book, Book> Processor() {
return new ItemProcessor<Book, Book>() {
@Override
public Book process(Book book) throws Exception {
book.setInventory(book.getInventory() + 10);
return book;
}
};
}
@Bean
public JpaItemWriter<Book> Writer() {
JpaItemWriter<Book> writer = new JpaItemWriter<>();
writer.setEntityManagerFactory(BookEntityManagerFactory);
writer.setUsePersist(true);
return writer;
}
}
5시간? 6시간? 잡고있었음 - 실패 : 에러 잡지 못함...
728x90
'ssung_항해일지 > 항해99_실전 프로젝트' 카테고리의 다른 글
실전 프로젝트 - 28일차 (0) | 2023.04.07 |
---|---|
실전 프로젝트 - 27일차 (0) | 2023.04.06 |
실전 프로젝트 - 24일차 (0) | 2023.04.04 |
실전 프로젝트 - 22일차 (0) | 2023.04.01 |
실전 프로젝트 - 21일차 (0) | 2023.03.31 |