スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Spring MVC Spring Data JPAを使ってみる(その2)

前回Spring Dataを使用したデータアクセスを実装したが、今回はさらに「リポジトリ」と呼ばれる機能を使って、同じ処理(一覧取得)を実装してみる。なお、掲載内容については前回との差分をメインとする。

■前回の記事
Spring MVC Spring Data JPAを使ってみる

◎動作検証にあたっての各バージョンは以下の通り
  • SpringFramework 3.2.8.RELEASE
  • Java 1.7
  • Tomcat 7.0

1.Mavenのpom.xml



org.springframework.data
spring-data-jpa
1.5.2.RELEASE



2.datasource-config.xml(追記)

<jpa:repositories base-package="jp.co.sample.book.dao"/>

前回のdatasource-config.xmlに上記一文を追加する。
@Repositoryが付与されたリポジトリを探すパッケージ配下を指定する。他は変更なし。

3.BookDaoRepository.java


package jp.co.sample.book.dao;

import jp.co.sample.book.entity.BookEntity;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookDaoRepository extends JpaRepository<BookEntity, Long> {
}

JpaRepositoryを継承したインターフェースに@Repositoryアノテーションを付与する。JpaRepositoryの型パラメタであるLongについては、キー(@Idアノテーションが付与された属性)の型を指定している。
メソッドについて何も指定してないが、これでよい。

4.BookServiceImpl.java


package jp.co.sample.book.service;

import java.util.List;

//import jp.co.sample.book.dao.BookDao;
import jp.co.sample.book.dao.BookDaoRepository;
import jp.co.sample.book.entity.BookEntity;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService<BookEntity> {

@Autowired
// BookDao<BookEntity> dao;
BookDaoRepository dao;

@Override
public List<BookEntity> findAll() {
return dao.findAll();
}
}

前回との差分が分かるようにしているが、インターフェースのみ定義したBookDaoRepositoryに@Autowiredでインジェクションしている。また、定義した覚えのないfindAllメソッドがコンパイルエラーになることなく、そのまま使えている。理由は、JpaRepositoryがfindAllメソッドを持っているためであり、この点がリポジトリ機能の中枢と言える。JpaRepositoryが持っている他のメソッド例として、1レコード取得するgetOneがあるが、その際に使用するキーの型は、先にインターフェースで定義した型パラメタのLongになる。仮にLongをStringに変えた場合、String型の引数をもったgetOneメソッドが用意される。

5.動作確認

リスト

SpringData JPAのリポジトリ機能を使うと実装クラスを用意しなくても済む。
ただ、どんなメソッドが使えるのか覚える必要がある。

■過去のSpring関連記事

Spring関連記事 Index


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

bookmount8

Author:bookmount8
システムエンジニア。サーバーサイドでjavaを扱うことが多い。最近は、ミドルやフロント周りも関心あり。

最新記事
カテゴリ
検索フォーム
最新コメント
月別アーカイブ
これまでの訪問者数
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。