Spring Bootの練習日記:8日目

今回もデータベースとのやりとりをやってみる。

Accessing JPA Data with RESTをやってみる

まずはbuild.gradleを編集する。

dependencies {
//    compile("org.springframework.boot:spring-boot-starter-web:1.2.2.RELEASE")
//    compile("org.springframework.boot:spring-boot-starter-actuator:1.2.2.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf:1.2.2.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-security:1.2.2.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-data-rest:1.2.2.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-data-jpa:1.2.2.RELEASE")
    compile("com.h2database:h2:1.4.183")

    compile("org.webjars:jquery:2.1.3")
    testCompile("org.springframework.boot:spring-boot-starter-test:1.2.2.RELEASE")
}

Spring Bootのバージョンが1.2.2になったらしいので、全体的に1.2.2にしておいた。

ドメインオブジェクトを作る

Personクラスを定義する。

package sample;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

そしてPerson Repositoryを作成。

package sample;

import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import java.util.List;

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
    List<Person> findByLastName(@Param("name") String name);
}

@RepositoryRestResourceアノテーションは、RESTfulなエンドポイントを作成する。ここでは/peopleになるように設定されているみたいだ。

これでgradle bootRunを実行すると、http://localhost:8080/peopleにRESTfulなエンドポイントが出来上がっていた。

実験的に、例であるようにcurlを使ってアクセスしてみる。

# GET
curl http://localhost:8080/people
# POST
curl -i -X POST -H "Content-Type:application/json" -d '{  "firstName" : "Frodo",  "lastName" : "Baggins" }' http://localhost:8080/people
# GET
curl http://localhost:8080/people/1
# PATCH
curl -X PATCH -H "Content-Type:application/json" -d '{ "firstName": "Bilbo Jr." }' http://localhost:8080/people/1
# GET
curl http://localhost:8080/people/search
# GET
curl http://localhost:8080/people/search/findByLastName?name=Baggins

@RepositoryRestResourceアノテーションを設定するだけでここまでやってくれるのはすごいなー。

次はHypermedia Driven REST web serviceをやってみようと思う。

というかそろそろなんか作ってみたほうがいいのかもしれない…。


カテゴリー Java | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です