スプリングデータJPAにはPageable機能とSorting機能があります。 MySQLのような他のDBMSでは、Springに対してSQLレベルのページ設定を提供するための "制限"機能と "オフセット"機能があります。私はSpring Data JPAがOracleと同じようにOracleデータベースとページングを処理する方法が同じ機能を持っていないのだろうかと思っています。 Springのソースコードでどこでこのような実装を見つけることができるか教えてください。実装にパフォーマンスの問題がありますか?oracleはMySQLのように "制限"と "オフセット"機能を提供していないため、SpringデータJPAがoracleデータベースでページングを実装する方法は?
HibernateのGithubのレポから
1
A
答えて
2
@Override
public String getLimitString(String sql, boolean hasOffset) {
sql = sql.trim();
boolean isForUpdate = false;
if (sql.toLowerCase(Locale.ROOT).endsWith(" for update")) {
sql = sql.substring(0, sql.length()-11);
isForUpdate = true;
}
final StringBuilder pagingSelect = new StringBuilder(sql.length()+100);
if (hasOffset) {
pagingSelect.append("select * from (select row_.*, rownum rownum_ from (");
}
else {
pagingSelect.append("select * from (");
}
pagingSelect.append(sql);
if (hasOffset) {
pagingSelect.append(") row_) where rownum_ <= ? and rownum_ > ?");
}
else {
pagingSelect.append(") where rownum <= ?");
}
if (isForUpdate) {
pagingSelect.append(" for update");
}
return pagingSelect.toString();
}
+0
こんにちは@Brian、とても役に立ちます。どのようにこれを見つけるのですか?メソッドhibernateがoracleのページネゴシエーションを処理していることを確認した後、大規模なデータセットではパフォーマンス上の問題が発生する可能性があります。 – linc01n
関連する問題
- 1. ページングのmysqlオフセットと制限を管理する方法
- 2. SpringデータJPAクエリがMsSQLサーバーで機能していない
- 3. OracleのNVLと同等の機能を提供するmysql関数
- 4. SpringブートでOracle AQキューを実装する方法は?
- 5. oracleを使用してデータセットを提供していない
- 6. Springのクライアントトークンに基づいてレート制限を実装する方法は?
- 7. LLVMは "グリーンスレッド" /軽量プロセスを実装するための機能を提供していますか?
- 8. グループは "制限とオフセット"のためにのみ、MySQLで
- 9. データベースエンジンに依存しないページングを実装する方法は?
- 10. は、クラウド機能のために提供
- 11. Oracleデータベースの行をスキップ/オフセットする方法は?
- 12. 制限とオフセットを使用してデータをページする方法
- 13. Facebookはアプリケーションにどのような機能を提供していますか?
- 14. Spring Frameworkが提供するStoredProcedureを使用したOracleストアドプロシージャの呼び出し
- 15. oracleデータベースのIDごとの行数を制限するにはどうすればよいですか。
- 16. JPA。 EricipselinkはmySQLのパスワードを提供していません
- 17. MySQLは部分的なロールアップをOracleのようにサポートしていますか? Oracleのドキュメントとして
- 18. Oracle Create Viewが機能しない
- 19. ClouderaのHiveはデータベースなしで(Mysql、Oracle)
- 20. Mirahはどのようなメタプログラミング機能を提供していますか?
- 21. Atlassian Stashはpastebin/GitHubのような機能を提供していますか?
- 22. Oracle。選択し、私はこのような機能を持っている
- 23. Spring Webアプリケーションで共有機能を実装する方法は?
- 24. SQL(oracle)チェック制約の難易度 - 実装方法がわからない
- 25. ページデータ付きSpringデータOracle JPAパフォーマンス
- 26. 誰かが無制限のページングCViewGridを実装していますか?
- 27. は私がイメージしてページング機能を実行しよう
- 28. XTextが提供しないANTLRの機能は何ですか?
- 29. LINQページング文はOracleデータベースに対してどのように実際に実行されますか?
- 30. Facebookの "New Story"機能のような機能を実装する方法は?
それはSDJは、ROWNUM/ROW_NUMBER()を使用しているようだ、何がhttp://www.baeldung.com/jpa-pagination/#comment-7469 – Cepr0
で見ますあなたのデータベースのバージョン?私が間違っていない場合、12cには制限やオフセットなどの機能があります。 – user75ponic
@ user75ponic私はオラクルが "限界"と "オフセット"をサポートしていないと述べたと思います。あなたはその質問について考えていますか? – linc01n