カテゴリ: Spring 更新日: 2025/06/03
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

SpringのCriteriaBuilderとcreateCriteriaDeleteの使い方を徹底解説!初心者でもわかるデータ削除方法

CriteriaBuilderのcreateCriteriaDeleteメソッド
CriteriaBuilderのcreateCriteriaDeleteメソッド

先生と生徒の会話形式で理解しよう

生徒

「Springで特定の条件に一致するデータを簡単に削除する方法ってありますか?」

先生

「はい、CriteriaBuilderクラスのcreateCriteriaDeleteメソッドを使えば、条件を指定してデータを効率的に削除できます。」

生徒

「動的に条件を設定できるんですか?」

先生

「そうです。createCriteriaDeleteを使えば、柔軟に条件を指定してデータ削除を実現できます。サンプルを見てみましょう!」

1. CriteriaBuilderとcreateCriteriaDeleteとは?

1. CriteriaBuilderとcreateCriteriaDeleteとは?
1. CriteriaBuilderとcreateCriteriaDeleteとは?

SpringのCriteriaBuilderは、JPA(Java Persistence API)の一部で、型安全な動的クエリを作成するためのクラスです。createCriteriaDeleteメソッドは、その中でもデータ削除に特化した機能を提供します。

通常のJPQLやSQLでは、クエリを直接記述しますが、createCriteriaDeleteを使用することで、コード内で条件を動的に設定しながらデータ削除が可能です。この方法は、柔軟性と安全性の向上に寄与します。

2. createCriteriaDeleteの基本的な使い方

2. createCriteriaDeleteの基本的な使い方
2. createCriteriaDeleteの基本的な使い方

以下の例では、特定の条件に一致するデータを削除する方法を解説します。例えば、"Inactive"ステータスの従業員データを削除するコードです。


import javax.persistence.*;
import javax.persistence.criteria.*;

public class CriteriaDeleteExample {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("examplePU");
        EntityManager em = emf.createEntityManager();

        try {
            em.getTransaction().begin();

            // CriteriaBuilderのインスタンスを取得
            CriteriaBuilder cb = em.getCriteriaBuilder();

            // createCriteriaDeleteでCriteriaDeleteを作成
            CriteriaDelete<Employee> delete = cb.createCriteriaDelete(Employee.class);

            // 削除対象のエンティティを指定
            Root<Employee> root = delete.from(Employee.class);

            // 条件を設定
            delete.where(cb.equal(root.get("status"), "Inactive"));

            // 削除クエリの実行
            int deletedRows = em.createQuery(delete).executeUpdate();

            System.out.println("Deleted rows: " + deletedRows);

            em.getTransaction().commit();
        } finally {
            em.close();
            emf.close();
        }
    }
}
PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

3. createCriteriaDeleteの実行結果

3. createCriteriaDeleteの実行結果
3. createCriteriaDeleteの実行結果

上記のコードを実行すると、"Inactive"ステータスの従業員データが削除されます。以下は実行結果の例です。


Deleted rows: 4

4. createCriteriaDeleteを使うメリット

4. createCriteriaDeleteを使うメリット
4. createCriteriaDeleteを使うメリット

createCriteriaDeleteを使用することで、以下のようなメリットがあります:

  • 動的な条件設定:削除対象の条件をプログラム的に変更可能。
  • 効率的なデータ削除:複数レコードを一度に削除可能。
  • 型安全性:クエリ内でフィールドや値が型安全に管理される。

実務では、大量のデータを操作する際に、効率的かつ安全に削除を行える点で特に有用です。

5. 注意点

5. 注意点
5. 注意点

createCriteriaDeleteを使用する際には、以下の点に注意してください:

  • トランザクション管理:削除操作にはトランザクションが必要です。
  • 条件設定の確認:削除条件を正確に設定しないと、予期しないデータが削除される可能性があります。
  • 関連データへの影響:削除対象のエンティティに関連するデータの整合性を確認してください。

6. まとめ

6. まとめ
6. まとめ

本記事では、SpringのCriteriaBuilderクラスを使用してcreateCriteriaDeleteメソッドを利用したデータ削除の方法について解説しました。createCriteriaDeleteを使うことで、動的な条件設定が可能となり、効率的かつ安全にデータ削除が行えることを学びました。

また、トランザクションの管理や削除条件の設定、関連データへの影響を考慮する重要性についても理解しました。この方法は、大量データを扱うアプリケーションや、柔軟性が求められる環境で非常に役立ちます。

以下に、複数条件を使用したcreateCriteriaDeleteの応用例を示します。


import javax.persistence.*;
import javax.persistence.criteria.*;

public class AdvancedCriteriaDelete {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("examplePU");
        EntityManager em = emf.createEntityManager();

        try {
            em.getTransaction().begin();

            // CriteriaBuilderのインスタンスを取得
            CriteriaBuilder cb = em.getCriteriaBuilder();

            // createCriteriaDeleteでCriteriaDeleteを作成
            CriteriaDelete<Employee> delete = cb.createCriteriaDelete(Employee.class);

            // 削除対象のエンティティを指定
            Root<Employee> root = delete.from(Employee.class);

            // 複数の条件を設定
            delete.where(
                cb.and(
                    cb.equal(root.get("status"), "Inactive"),
                    cb.lessThan(root.get("yearsOfService"), 2)
                )
            );

            // 削除クエリの実行
            int deletedRows = em.createQuery(delete).executeUpdate();

            System.out.println("Deleted rows: " + deletedRows);

            em.getTransaction().commit();
        } finally {
            em.close();
            emf.close();
        }
    }
}

このコードでは、"Inactive"ステータスで勤務年数が2年未満の従業員データを削除しています。

以下は実行結果の例です。


Deleted rows: 2
先生と生徒の振り返り会話

生徒

「今日はcreateCriteriaDeleteを使ったデータ削除の方法を学びました。条件を柔軟に設定できるのが便利ですね!」

先生

「その通りです。特に複雑な条件を使いたいときや、大量のデータを安全に削除したいときに役立ちます。」

生徒

「複数の条件を設定することで、不要なデータだけを正確に削除できるのがいいですね。」

先生

「はい。次回は関連テーブルを考慮した削除について学びましょう。」

カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

Spring Data JPAのJpaRepositoryインターフェースの使い方を完全ガイド!初心者でも安心
JSPの実行の流れをフローで理解!サーブレットとの関係性と処理順序を理解しよう
JavaのLocalDateTimeクラスとisAfterメソッドを完全ガイド!初心者でもわかる日時比較
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門