JPQLに基づく純粋なSQL文方式の詳細な説明

JPQLに基づく純粋なSQL文方式の詳細な説明

JPQL は Java Persistence Query Language の略です。

Java Persistence Query Language (JPQL) は、EJB 2.0 で初めて導入された EJB Query Language (EJB QL) に基づいて、SQL 構文と単純なクエリ セマンティクスをオブジェクト指向式言語の形式で結合するように設計された移植可能なクエリ言語です。この言語で記述されたクエリは移植可能であり、すべての主要なデータベース サーバーで SQL にコンパイルできます。

その機能はネイティブ SQL ステートメントに似ており、完全にオブジェクト指向であり、テーブル名やテーブル属性ではなく、クラス名と属性を通じてアクセスされます。

JPQL を使用するには、SQL ステートメントを HQL ステートメントと同様に変更する必要があります。 SQL はデータベースをクエリしますが、JPQL はオブジェクトと属性をクエリするため、構文が多少異なります。 JPQL で記述できないクエリの場合は、ネイティブ SQL で記述する方が便利です。

次に例を示します。構文の違いに注意してください。

JPQLクエリ

@永続コンテキスト
保護された EntityManager em;

パブリックリスト<ビデオ> findVideoList1() {
  文字列 hql = "ビデオから ID 降順で並べ替え";
  クエリ query = em.createQuery(hql);
  リスト<ビデオ> 結果 = query.getResultList();
  em.clear();
  結果を返します。
}

SQLクエリ

過去7日間のデータを照会する

パブリックリスト<ビデオ> findVideoList2() {
  リスト<ビデオ> 結果 = (リスト<ビデオ>) em.createNativeQuery
    ("select * from db_video where date_sub(curdate(), interval 6 day) <= date(date) order by date desc", Video.class)
    .getResultList();
  結果を返します。
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JPAはJPQL文を使用して追加、削除、変更、クエリを実行します。
  • mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)
  • 純粋なPythonで開発されたNoSQLデータベースCodernityDBの紹介と使用例
  • 純粋な IP データを MySQL にインポートする方法を 3 つのステップで詳しく説明します。
  • 純粋な CSS+DIV で書かれた美しい Flash スライドショーと SQL タグ チュートリアル!
  • SQL 削除ステートメント DROP、TRUNCATE、DELETE の違い
  • Mybatis-plus 構成コンソールはパラメータを含む完全な SQL ステートメントを出力します。
  • IDEA に MyBatis Log Plugin プラグインをインストールし、mybatis SQL ステートメントを実行します (推奨)

<<:  React スキャフォールディングのパスエイリアスを設定する方法

>>:  事例を通してLinux NFSの仕組みを詳細に分析

推薦する

Python スクリプトを Ubuntu で直接実行する方法

翻訳プログラムを例に挙げてみます。前回はWindowsでのアプリケーションのパッケージ化についてお話...

HTML のフォームフォームのメソッド属性の紹介

1 メソッドは、データをサーバーに送信する方法を指定するプロパティです。 2 post と get ...

Vue スキャフォールディングでのレンダリングを理解する

Vue スキャフォールディングでは、エントリ ファイル main.js の新しい Vue コードに、...

CSS により、子コンテナが親要素を超えます (子コンテナは親コンテナ内で浮動します)

序文場合によっては、次の図のような浮動効果の要件が必要になります。 成し遂げる標準的な通常の状況では...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

Linuxで相対パスを表現する方法

たとえば、現在のパスが /var/log で、/usr ディレクトリに移動する場合は、次のコマンドを...

MySQL サブクエリとグループ化されたクエリ

目次概要サブクエリサブクエリの分類クエリの結果によるとサブクエリの位置で区別する選択後のサブクエリサ...

VUEウォッチリスナーの基本的な使い方の詳しい説明

目次1. 次のコードはwatchの簡単な使用法です2. 即時監視3. ハンドラメソッド4. 深い属性...

mysql 5.7.23 winx64 解凍バージョンのインストールチュートリアル

参考までに、mysql-5.7.23-winx64 解凍版の詳細なインストールチュートリアルです。具...

Vue2とVue3の兄弟コンポーネント通信バスの違いと使い方

目次vue2.x vue3.x tiny-emitterプラグインの使用Mittプラグインの使用vu...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

個人的な意見: デザインについて語る

<br />最も実用的なものを選んで話しましょう。まず、勤務先の都市を慎重に選ぶ必要があ...

nginx + fastcgi を使用して画像認識サーバーを実装する

背景ディープラーニング モデルの推論には、特定のデバイスが使用されます。マシンは、モデルの読み込み、...

CSS3 で作成したホバーズーム効果

結果:実装コード: html <link href='https://fonts.go...

MySQL がデフォルト値を持つ NULL 列の使用を推奨しない理由

よく聞かれる答えは、列に NULL 値を使用するとインデックスが無効になるというものですが、実際にテ...