1

私はSpringバッチフレームワークを使用しているプロジェクトで働いています。私はそれに初心者です。

固定長のフラットファイル長を読み取り、それを処理してBeanにデータを入力するようなタスクがあります。その後、リクエストから値を使用して、Oracleを使用してデータベースからデータをフェッチし、固定長フラットとして応答を生成する必要があります。ファイル。

構成ファイルの小さなコードスニペットの下に貼り付けました。

<bean name="tickerReader"
        class="org.springframework.batch.item.file.FlatFileItemReader">
        <property name="resource" ref="fileSystemResource" />
        <property name="lineMapper" ref="tickerLineMapper" />
<bean>
 ..............................
 ..............................

<batch:job id="TickerPriceConversion">
        <batch:step id="convertPrice">
            <batch:tasklet transaction-manager="transactionManager">
                <batch:chunk reader="tickerReader" processor="tickerPriceProcessor"
                    writer="simbeqResponseFlatFileWriter" commit-interval="10" >
            </batch:chunk>
            </batch:tasklet>
        </batch:step>
    </batch:job>

読み取り部分、つまりリクエストファイルの読み取りを行い、対応するBeanにデータを入力しました。次に、リクエストのデータに対応するHibernateを使用してOracleからデータをフェッチする必要があります。どうすればいいのかわからない?どのようにすればよいですか?セッションファクトリを構成し、それを使用してデータをフェッチすることを意味します。

誰かが私を案内してもらえますか?

4

2 に答える 2

2

サンプルの hibernate ジョブのようにHibernateCursorItemReaderを使用できます。

<bean id="hibernateItemReader"
    class="org.springframework.batch.item.database.HibernateCursorItemReader">
    <property name="queryString" value="from CustomerCredit" />
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

sessionFactory とトランザクション マネージャーの設定については、サンプルのhibernate-contextも参照してください。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingLocations" value="classpath*:/org/springframework/batch/sample/domain/**/*.hbm.xml" />
    <property name="hibernateProperties">
        <value>
            <![CDATA[
        hibernate.show_sql=true
        hibernate.format_sql=true
        ]]>
        </value>
    </property>
</bean>
于 2013-01-23T15:59:42.740 に答える
0
@StepScope
@Slf4j
@Component
public class CursorItemReader extends HibernateCursorItemReader<ItemEntity> {


    public CursorItemReader(EntityManagerFactory entityManagerFactory,
                            @Value("#{stepExecution}")StepExecution stepExecution) {

       
        this.setName("CursorItemReader");
        this.setSessionFactory(entityManagerFactory.createEntityManager().unwrap(org.hibernate.Session.class).getSessionFactory());
        this.setQueryString("from ItemEntity");
        this.setUseStatelessSession(true);
        this.setFetchSize(5);
    }

    @Override
    public ItemEntity read() throws Exception {
        ItemEntity item = this.doRead();
        return item;
    }

}
于 2021-06-17T10:12:50.590 に答える