libro
www.tuyano.com
初心者のためのSpring Framework入門

CRUDの基本をマスターする (4/5)

作成:2015-08-01 08:43
更新:2015-08-01 08:43

■エンティティの削除

残るは、エンティティの削除ですね。

削除も、基本的にはエンティティの更新と同じです。IDを指定してエンティティのインスタンスを取得し、削除してからトランザクションをコミットする、といったやり方をします。

下のリスト欄に、簡単なサンプルを挙げておきました。実行すると、ID=1, 3のエンティティを削除し、残る2つだけを表示します。では、これも流れを整理しておきましょう。
SampleEntity entity = manager.find(SampleEntity.class, id);

まず、EntityManagerの「find」を使い、指定したIDのエンティティ(ここではSampleEntity)を取り出します。
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
続いて、EntityTransactionインスタンスを取得し、トランザクション処理を開始します。
manager.remove(entity);
エンティティを削除します。これはEntityManagerの「remove」メソッドを使います。引数に、データベースから取り出したエンティティのインスタンスを指定すると、それをデータベースから取り除きます。
manager.flush();
transaction.commit();
最後にEntityManagerflushし、EntityTransactioncommitすれば、データベースの更新が完了し、データが削除されます。――いかがですか。エンティティの更新がわかれば、削除もほぼ同じ感覚で行えるでしょう?

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro.db;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {
    private static EntityManager manager;

    public static void main(String[] args) {
        ApplicationContext app = new 
            AnnotationConfigApplicationContext(SampleEntityConfig.class);

        EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);
        manager = factory.createEntityManager();

        // make dummy
        makeDummyData();
        
        // delete entity
        deleteEntity(1L);
        deleteEntity(3L);

        // get list
        Query query = manager.createQuery("from SampleEntity");
        List list = query.getResultList();
        printList(list);

        System.out.println("...ok.");
    }

    public static void makeDummyData() { 略 }
    public static void printList(List list) { 略 }
    
    // delete entity
    public static void deleteEntity(long id) {
        SampleEntity entity = manager.find(SampleEntity.class, id);
        EntityTransaction transaction = manager.getTransaction();
        transaction.begin();
        manager.remove(entity);
        manager.flush();
        transaction.commit();
    }
}

※関連コンテンツ

「初心者のためのSpring Framework入門」に戻る