春データJPAの基礎-01

SpringData:

春のデータは、データベースへのアクセス、およびクラウドサービスのためのオープンソースのフレームワークのサポートを簡素化するために使用されています。その主な目的は、データへのアクセスを迅速かつ便利になり作り、およびクラウドコンピューティングとデータ・サービスをサポートするフレームワークを地図削減することです。春データは、複数のコンポーネントが含まれています。

  1. コモンズ - クロスデータベースの永続性のために、各サブプロジェクトの使用のための共有フレームワークのための基礎を提供するサポート
  2. JPA - 関数は、JPAの永続化層とストレージ間のデータアクセス層の作成を簡素化
  3. Hadoopの - HadoopのジョブSpringベースの構成とPOJOプログラミングモデルMapReduceジョブ
  4. キー値 - RedisのとRiakに統合さは、一般的な複数のシーンで簡易包装を提供します
  5. ドキュメント - 統合文書データベース:CouchDBのとMongoDBの基本的な構成のマッピングとデータベースのサポートを提供します
  6. グラフ - 強力な統合のNeo4j POJOベースのプログラミングモデルを提供
  7. グラフRooのアドオン - のNeo4jのためのRooサポート
  8. JDBC拡張機能 - オラクルRAD、アドバンスト・キューイング、および高度なデータ型をサポートしています
  9. マッピング - 異なるデータベースをサポートするために、オブジェクトマッピングフレームワークのGrailsを提供することに基づきます
  10. 例 - サンプルプログラム、ドキュメント、およびデータベース
  11. ガイダンス - 高度なドキュメント

SpringDataJPA:

春JPAでの開発を簡素化するためのフレームワークを提供します。

機能:ケースが大きくJPA文言を簡略化することができ、ほとんどのアクセスを実現し、データを操作するために特定の方法(すなわち、インタフェース)を書き込むことができません。CRUDのほかに、さらに頻繁に使用されるようなページングなどの機能、ソートなどの数を含みます。

春データJPAは何がありますか?

メインは春データJPA、また春データJPAの中核となる概念が提供するインターフェースを見てみましょう:

  1. リポジトリ:トップ・レベル・インターフェースは空インタフェース、すべてのリポジトリ均一なタイプの目的、及び場合スキャンアセンブリが自動識別を可能にします。
  2. CrudRepository:リポジトリは、CRUD機能を提供し、サブインターフェースであります
  3. PagingAndSortingRepository:CrudRepositoryサブインターフェースは、ページングおよびソート機能を追加し、あります
  4. JpaRepository:PagingAndSortingRepositoryサブインタフェースであり、そのようなものとして、いくつかの便利な機能、追加:バッチ操作を。
  5. JpaSpecificationExecutor:クエリインターフェイスを作るために使用されるには責任があります
  6. 仕様:クエリ仕様は、この仕様は、クエリ条件を設定することができますだけで周り、複雑なクエリを実行するために、春データJPAによって提供され

 

JpaRepositoryクエリ:

次のようにインタフェースで定義された直接クエリメソッドでは、それが準拠している場合、あなたが実装を作成することはできません現在、キーワード文言をサポートしています。

JpaRepository方法定義されたキーワード
キーワード(キーワード) サンプル(メソッド名例) JPQLスニペット(JPQL対応する声明)
そして findByLastNameAndFirstName どこx.lastname =?1とx.firstname =?2

若しくは

findByLastnameOrFirstname どこx.lastname =?1またはx.firstname =?2
の間に findByStartDateBetween どこ?1との間x.startDate?2
未満 findByAgeLessThan どこx.age <?1
LessThanEqual findByAgeLessThenEqual どこx.age <=?1
演算子:GreaterThan findByAgeGreeterThan どこx.age>?1
GreaterThenEqual findByAgeGreeterThanEqual どこx.age> =?1
後に findByStartDateAfter どこx.startDate>?1
findByStartDateBefore どこx.startDate <?1
無効です findByAgeIsNull x.ageがnullです
IsNotNull / NOTNULL findByAgeIsNotNull / findByAgeNotNull どこx.age nullではありません
以下のような findByFirstnameLike どこが好きx.firstname?1
NotLike findByFirstnameNotLike どこx.firstnameは好きではない?1
で始まります findByFirstnameStartingWith ?どこのようなx.firstname(とバインドパラメータ追加%_ %を結合するための尾、EG:startStr%
EndingWith findByFirstnameEndingWith ?ここx.firstname 1等(結合パラメータでプリペンド%_ パラメータバインディングプレ%、EG: のendStr
含みます findByFirstnameContaining

?1のようなx.firstname場所(パラメータバインド %に包まれた_ %にパラメータが含まれ、EG:%paraStr%

[並べ替え findByAgeOrderByLastnameDesc / ASC x.lastnameのDESC / ASCによってどこx.age =?1件のオーダー
ではありません findbyLastnameNot どこx.lastname <>?1
findByAgeIn(コレクション歳) どこでx.age(AGE1、AGE2、AGE2 ...)
ありませんで findByAgeNotIn(コレクション歳) どこx.ageないで(AGE1、AGE2、AGE2 ...)
findByActiveTrue() どこx.active =真
findByActiveFalse() どこx.active =偽
IGNORECASE findByFirstnameIgnoreCase() ここでUPPER(x.firstname)= UPPER(?1)
findFirstByOrderBy * ASC / DESC findFirstByOrderByLastnameAsc / DESC() 最後に正のシーケンス/フラッシュバック構成、クエリ行ラインの最初のレコードによって
ページ<ユーザー> queryFirst10By姓(文字列の姓、ページング可能ページング可能) 対象ページ内の姓のクエリをよると、アクセス上位10行のレコードへ
リスト<ユーザ>     findFirst10By(ソートソート文字列の姓)姓 姓の方法をソート、記録の上位10行が取得します
一覧<ユーザー>  findTop10By姓(文字列の姓、ページング可能ページング可能)。 対象ページ内の姓のクエリをよると、アクセス上位10行のレコードへ

JPAページングクエリ:

//Dao接口定义分页查询方法:
Page<User> findByUserName(String userName,Pageable pageable);

//调用测试Dao定义的分页查询方法:
public void testFindUserList(){
    int page = 1;   //当前页码
    int size = 10;  //每页大小
    Sort sort = new Sort(Direction.DESC,"id");  //根据id降序
    Pageable pageable = new PageRequest(page,size,sort);
    //Pageable pageable = new PageRequest(1,10,Direction.DESC,"id");
    Page<User> page = repository.findByUserName("testName",pageable);
    
    System.out.println(page.getTotalElements()); //总记录数
    System.out.println(page.getTotalPages()); //总页数
    //打印查询数据
    for (User user: page.getContent()) {
        System.out.println(user.toString());
    }
}

JPAのカスタムクエリ:

@Modifying  //涉及记录删除和修改
@Query("update User u set u.userName = ? where c.id = ?") //sql语句
int modifyByIdAndUserId(String userName, Long id);


@Transactional  //涉及事务
@Modifying  //涉及记录的删除和修改
@Query("delete from User where id = ?")
void deleteByUserId(Long id);


@Transactional(timeout = 10) //设置超时查询10s,默认30s()
@Query("select u from User u where u.emailAddress = ?")
User findByEmailAddress(String emailAddress);

 

JPA主キーが生成さ:

1. UUIDがプライマリキー生成を休止、次の2つの例であってもよいです。

  •   @GeneratedValue(generator="system-uuid")             JPA通用策略生成器
  •   @GenericGenerator(name="system-uuid",strategy="uuid")         自定义主键生成策略(strategy:生成策略)

2.JPA提供的四种标准主键生成器策略:

  • @GeneratedValue(generator=GenerationType.AUTO)       主键由程序控制。
  • @GeneratedValue(generator=GenerationType.IDENTITY)  主键由数据库自动生成(自增型号)。
  • @GeneratedValue(generator=GenerationType.SEQUENCE)  根据底层数据库的序列号生成,前提是数据库支持序列(例如oracle)。
  • @GeneratedValue(generator=GenerationType.TABLE)   使用一个特定的数据库表格保存主键。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/J1014329058/article/details/85113029