14

Hibernate で Spring + Spring Data JPA を使用しており、大規模で高価なデータベース操作を実行する必要があります。

StatelessSessionを使用してこれらの種類の操作を実行するにはどうすればよいですか?

4

2 に答える 2

13

解決策は、Spring ファクトリ Bean を実装してこれを作成StatelessSessionし、カスタム リポジトリの実装に注入することです。

public class MyRepositoryImpl implements MyRepositoryCustom {

    @Autowired
    private StatelessSession statelessSession;

    @Override
    @Transactional
    public void myBatchStatements() {
        Criteria c = statelessSession.createCriteria(User.class);

        ScrollableResults itemCursor = c.scroll();

        while (itemCursor.next()) {
            myUpdate((User) itemCursor.get(0));
        }
        itemCursor.close();

        return true;
    }

}

StatelessSessionFactoryBeanおよび完全な Gistはこちらで確認してください。Spring 3.2.2、Spring Data JPA 1.2.0、および Hibernate 4.1.9 を使用。

このJIRAとコードを添付してくれた人に感謝しStatelessSessionFactoryBeanます。これが誰かの役に立てば幸いです。私にとっては魅力的でした。

于 2013-03-17T12:15:36.713 に答える