Spring Data REST


Spring Data Rest


RESTFul Webサービスとは、HTTP方式によるリソースアプリケーションCRUD操作のことである.
Spring Webを使用するには@RestControllerを使用してコントローラを作成および使用する必要がありましたが、Spring Data Restは自動のRESTful APIを提供しており、EntityとRepositoryインタフェースを個別のコントローラで表示および分析する必要はありません(非常に良いです)
Spring Data RestはSpring HATEOASとSpring Data JPAの機能を自動的に組み合わせます.

Spring HATEOAS?


Spring HATEOASがサーバからクライアントに応答リソースを送信する場合、利用可能なURIをリンクとして一緒に渡すことができ、クライアントは提供されたリンク情報に基づいてリソースにアクセスすることができる.すなわち、クライアントがサーバにREST要求を発行すると、サーバは各リソースを応答で参照できるURLを返す.

使用例


マニュアル
  • doc(
  • 参照)

    依存性


    Spring Data Jpa,
    h2
    Rest REpositories
    こうして3つ作りました
    package com.study.practicespringboothateoas.accessingdatarest;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name = "person")
    public class Person {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "id", nullable = false)
        private Long id;
    
        @Column(name = "first_name")
        private String firstName;
    
        @Column(name = "last_name")
        private String lastName;
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    }
    
    上記のようにentityを定義します.
    package com.study.practicespringboothateoas.accessingdatarest;
    
    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);
    
        List<Person> findByFirstName(@Param("first") String first);
    
    }
    
    
    これにより,そのエンティティに対するcrudのコントローラを内部で自動的に生成することができる.

    Test



    すぐにデータを挿入できます.
    次にhalタイプのリンクも提供され、挿入データのリソースアドレスが自動的に生成されることがわかります.
    リンクを使用して、生成されたデータを選択できます.
    そして、リポジトリで定義されたList findByLastName(@Param("name")Stringname);使用するには、次のようにパラメータ値を渡します.

    もしそうであれば、updateとdeleteも自動的に実行され、対応するリソースにデータを転送するだけでいいです.
    これにより、Data Restは、コントローラやサービスを作成することなく、基本的なCRUDを提供します.

    もっと勉強しなければならない内容

  • 複雑なクエリーが発生した場合、どうすればいいですか?
  • 確認ベル数は?AOPはどのように適用しますか?
  • ビューとどのように通信しますか?
  • 異常処理のような論理はどこに置くべきですか?
  • セキュリティは適用されますか?
  • 上の疑問点以外にも疑問点がたくさんあるので、もう少し掘らなければなりません.