JpaRepositoryを利用する (7/8)
作成:2015-08-08 11:05
更新:2015-08-08 11:13
更新:2015-08-08 11:13
■リポジトリのメソッドを利用する
では、App.javaを書き換えて、これらを使ってみましょう(下のリスト参照)。すると、簡単に必要なエンティティが検索できることがわかるでしょう。検索部分を見ると、こんな感じに呼び出していますね。
・nameでの検索
検索結果:
・mailでの検索
検索結果:
findByNameLike("%ko")では、nameの値が「ko」で終わるエンティティが検索されています。また、findByMailEndingWith(".com")では、mailの値が「.com」で終わるエンティティが検索されているのがわかります。ちゃんと必要な物だけが検索できていますね。
ここでよく思い出して欲しいのが、「SampleEntityRepositoryには、メソッドの宣言を書いただけだ」という点です。つまり、これらのメソッドで実際に実行する処理は、一切書いていないのです。ただメソッドの宣言を書いただけで、ちゃんとその通りに動くメソッドが自動生成されているのです。
これが、JpaRepositoryの威力です。JpaRepositoryでは、あらかじめ決まった型式でメソッド名を書いておくと、その名前を元にして実際に動くメソッドが自動生成されるのです。
・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では、あらかじめ決まった型式でメソッド名を書いておくと、その名前を元にして実際に動くメソッドが自動生成されるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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入門」に戻る