Spring BootでSpring-data-jpaを使った配置方法を詳しく説明します。


これらの多くの単調なデータ操作語句を解決するために、私達が最初に思い付いたのはORMフレームを使っています。Hbernateを統合した後、Javaエンティティを操作する方式で最終的にデータ変更をデータベーステーブルにマッピングします。
抽象的なJavaエンティティの基本的な「添削・修正」操作を解決するために、通常はテンプレートDaoをパンチングでカプセル化して抽象的に簡略化しますが、それでも便利ではありません。私たちは各エンティティに対してパンチング・テンプレートDaoを継承するインターフェースを作成して、このインターフェースの実現を編纂しなければなりません。いくつかの基礎的なデータアクセスは、十分に多重化されているが、コード構造上の各エンティティに対しては、Daoのインターフェースの山があり、実装されている。
テンプレートDaoの実装によって、これらの具体的なエンティティのDao層は非常に薄くなり、いくつかの具体的なエンティティがあるDao実装は、テンプレートDaoに対する簡単なエージェントであり、しばしばこのような実装クラスは、多くのエンティティに現れるかもしれない。spring-data-jpaの出現はこのようにすでにとても“薄い”のデータの訪問層をただ1階のインターフェースの編纂方式になることができます。例えば、次の例:

public interface UserRepository extends JpaRepository<User, Long> {
  User findByName(String name);
  @Query("from User u where u.name=:name")
  User findUser(@Param("name") String name);
}
私たちはJpaRepositoryから継承されたインターフェースを作成するだけで、データのアクセスが完了します。次は具体的な例でSpring-data-jpaがもたらした強力な機能を体験します。
使用例
Spring-data-jpaはハイベルナーに依存しています。Hiberg-data-jpaを使用して、Hibergに対して一定の理解があれば、以下の内容は簡単に分かります。Hibernate初心者の方でしたら、まず次のように入門してから、Hibernateを勉強して、この部分の理解とさらなる使用を助けることを提案します。
プロジェクトの設定pom.xmlに関連する依存関係を追加し、以下の内容を追加する。

<dependency 
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application.xmlで構成されています。データベース接続情報(埋め込みデータベースを使用すると不要)、自動的にテーブル構造の設定を作成します。例えば、MySQLを使用する場合は以下の通りです。

spring.datasource.url=jdbc:mysql://localhost:3306/test 
spring.datasource.username=root 
spring.datasource.password=root 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop 
spring.jpa.properties.hibernate.hbm2ddl.autoは、ヒベルナの構成属性であり、主な役割は、データベーステーブル構造を自動的に作成、更新、検証することである。このパラメータのいくつかの構成は以下の通りです。
  • create:hibernateをロードするたびに、前回の生成したテーブルを削除して、あなたのmodelクラスに基づいて新しいテーブルを再生成します。二回でも何の変化もなくこのように実行します。これはデータベーステーブルのデータが失われる原因の一つです。
  • create-drop:ヒベルナをロードするたびにモデルタイプによってテーブルを生成しますが、session Factoryがオフになると、表は自動的に削除されます。
  • update:最も一般的な属性は、最初にhibernateをロードする時にモデルクラスによって自動的にテーブルの構造を構築し(前提はデータベースを構築しておく)、後でhibernateをロードする時にmodel種類によって自動的にテーブル構造を更新し、テーブル構造が変化してもテーブルの中の行は以前の行を削除しない。サーバーに配置されても、テーブル構造はすぐには構築されません。アプリケーションが初めて実行されるのを待つ必要があります。
  • validate:ヒベルナをロードするたびに、データベーステーブル構造を作成することを検証し、データベース内のテーブルと比較するだけで、新しいテーブルは作成されませんが、新しい値が挿入されます。
  • これで基礎構成が完成しました。もしSpringで統合して使用したことがあれば、Spring Bootの便利さを感じました。JPAの伝統的な構成はpersistence.xmlファイルにありますが、ここでは必要ありません。もちろん、プロジェクトを構築する時に、前に提出した最適な実践的な工程構造によって組織したほうがいいです。このように、さまざまな配置がフレームにスキャンされることを確保します。
    エンティティを作成
    Userエンティティを作成して、id(メインキー)、name(名前)、age(年齢)属性を含めて、ORMフレームを通じてデータベーステーブルにマッピングされます。hibernate.hbm2ddl.autoが配置されているので、アプリケーションが起動すると自動的にフレームがデータベースから対応テーブルを作成します。
    
    @Entity
    public class User {
      @Id
      @GeneratedValue
      private Long id;
      @Column(nullable = false)
      private String name;
      @Column(nullable = false)
      private Integer age;
      //       
      //   getter setter
    }
    データアクセスインターフェースを作成
    以下、Userエンティティに対して、対応するRepositoryインターフェースを作成し、エンティティへのデータアクセスを実現する。
    
    public interface UserRepository extends JpaRepository<User, Long> {
      User findByName(String name);
      User findByNameAndAge(String name, Integer age);
      @Query("from User u where u.name=:name")
      User findUser(@Param("name") String name);
    }
    Spring-data-jpaでは、上記のようなインターフェースを作成するだけでデータアクセスが可能です。もう私達のようにインターフェースを作成した時に、自分でインターフェースの実現類を編纂しなければならなくて、直接に私達のファイルリストを減らしました。UserRepositoryインターフェースのAPIドキュメントを見ることによって、このインターフェース自体が作成(save)、更新(save)、削除(delete)、クエリ(findAll、findOne)などの基本的な操作の関数を実現していることが分かります。したがって、これらの基礎操作に対するデータアクセスは開発者自身が定義する必要がありません。
    私たちの実際の開発では、JpaRepositoryインターフェースによって定義されたインターフェースは、まだ十分ではないか、または性能が最適化されていません。さらに、より複雑なクエリや操作を実現する必要があります。本文はspring bootの中でspring-data-jpaを統合することに重点を置いているので、ここでまずレンガを投げて玉を引いて簡単にspring-data-jpaの中で私達を興奮させる機能を紹介します。
    上記の例では、次の2つの関数が見られます。
  • JpaRepository
  • JpaRepository
  • これらはそれぞれ、nameによってUserエンティティを照会し、nameおよびageによってUserエンティティを照会することを実現しており、ここではSQL文の種類がなく、二つの条件照会方法を完成していることがわかる。これはSpring-data-jpaの大きな特性です。解析方法名でクエリーを作成します。
    締め括りをつける
    以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。もっと知りたいなら、下のリンクを見てください。