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

JpaRepositoryを利用する (7/8)

作成:2015-08-08 11:05
更新:2015-08-08 11:13

■リポジトリのメソッドを利用する

では、App.javaを書き換えて、これらを使ってみましょう(下のリスト参照)。すると、簡単に必要なエンティティが検索できることがわかるでしょう。検索部分を見ると、こんな感じに呼び出していますね。

・nameでの検索
List list1 = repository.findByNameLike("%ko");

検索結果:
SampleEntity [id=2, name=hanako, mail=hanako@flower.uk]
SampleEntity [id=4, name=sachiko, mail=sachico@happy.com]

・mailでの検索
List list2 = repository.findByMailEndingWith(".com");

検索結果:
SampleEntity [id=1, name=tuyano, mail=syoda@tuyano.com]
SampleEntity [id=4, name=sachiko, mail=sachico@happy.com]


findByNameLike("%ko")では、nameの値が「ko」で終わるエンティティが検索されています。また、findByMailEndingWith(".com")では、mailの値が「.com」で終わるエンティティが検索されているのがわかります。ちゃんと必要な物だけが検索できていますね。

ここでよく思い出して欲しいのが、「SampleEntityRepositoryには、メソッドの宣言を書いただけだ」という点です。つまり、これらのメソッドで実際に実行する処理は、一切書いていないのです。ただメソッドの宣言を書いただけで、ちゃんとその通りに動くメソッドが自動生成されているのです。

これが、JpaRepositoryの威力です。JpaRepositoryでは、あらかじめ決まった型式でメソッド名を書いておくと、その名前を元にして実際に動くメソッドが自動生成されるのです。

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

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

●プログラム・リスト●

// ********************
// ※App.java
// ********************

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.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    private static EntityManager manager;

    public static void main(String[] args) {
        //ApplicationContext app = new 
            AnnotationConfigApplicationContext(SampleEntityConfig.class);
        ApplicationContext app = new ClassPathXmlApplicationContext("dbbean.xml");

        EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);
        manager = factory.createEntityManager();
        makeDummyData();
        
        // get repository
        SampleEntityRepository repository = app.getBean(SampleEntityRepository.class);
        
        // get list
        List list1 = repository.findByNameLike("%ko");
        System.out.println("*Find By Name*");
        printList(list1);
        List list2 = repository.findByMailEndingWith(".com");
        System.out.println("*Find By Mail*");
        printList(list2);
        
        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.uk"));
        manager.persist(new SampleEntity("taro", "taro@yamada.jp"));
        manager.persist(new SampleEntity("sachiko", "sachico@happy.com"));
        manager.flush();
        transaction.commit();
    }

    // print all entity.
    public static void printList(List list) { 略 }
}

※関連コンテンツ

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