libro
www.tuyano.com
初心者のためのSpring Framework入門

JpaRepositoryを利用する (3/8)

作成:2015-08-08 10:56
更新:2015-08-08 11:10

■アプリケーションでJpaReposioryを利用する

では、JpaRepositoryを利用してみることにしましょう。

com.tuyano.libro.dbパッケージにあるAppクラスを、下のリスト欄のように書き換えて下さい。そして実行してみましょう。ダミーとして作成してある全エンティティが表示されます。

ここでは、まずEntityManagerからSampleEntityRepositoryインスタンスを取得しています。
SampleEntityRepository repository = 
    app.getBean(SampleEntityRepository.class);
これで、Beanが取得されます。dbbean.xmlにはBeanの定義は用意されていませんが、このようにちゃんとBeanが取り出せます。これも、@Repositoryのおかげです。
List list = repository.findAll();
そして、「findAll」メソッドを呼び出すことで、エンティティのリストを取り出しています。「こんなメソッド、一体どこに?」と思った人。それは、SampleEntityRepositoryで継承しているJpaRepositoryに用意されていたのです。


■クラスはどこに?

ところで、ここでのコードを見て、ちょっと不思議に思った人もあるのではないでしょうか。SampleEntityRepositoryは、インターフェイスです。クラスではありません。それなのに、当たり前のようにBeanが取得できています。

JpaRepositoryは、インターフェイスを用意するだけで、自動的にクラスを作りBeanを生成するのです。必要なのはインターフェイスだけなのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro.db;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    private static EntityManager manager;
    
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("dbbean.xml");

        EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);
        manager = factory.createEntityManager();
        
        SampleEntityRepository repository = app.getBean(SampleEntityRepository.class);

        // make dummy
        makeDummyData();
        
        // get list
        List list = repository.findAll();
        printList(list);
        
        System.out.println("...ok.");
    }

    // create dummy entity data.
    public static void makeDummyData() {
        EntityTransaction transaction = manager.getTransaction();
        transaction.begin();
        manager.persist(new SampleEntity("tuyano", "syoda@tuyano.com"));
        manager.persist(new SampleEntity("hanako", "hanako@flower"));
        manager.persist(new SampleEntity("taro", "taro@yamada"));
        manager.persist(new SampleEntity("sachiko", "sachico@happy"));
        manager.flush();
        transaction.commit();
    }

    // print all entity.
    public static void printList(List list) {
        for (Object item : list) {
            System.out.println(item);
        }
    }
}

※関連コンテンツ

「初心者のためのSpring Framework入門」に戻る