JPAの基本を覚える (4/7)
作成:2017-10-28 09:13
更新:2017-10-28 09:13
更新:2017-10-28 09:13
■サーブレット作成とエンティティの利用
では、このMyDataEntityのデータを利用するサーブレットを作成しましょう。これも、com.tuyano.libroパッケージに作成をします。「MyDataEntityServlet.java」というファイル名でファイルを用意し、下のリスト欄のように記述をして下さい。
さあ、ようやくJPA経由でデータベースにアクセスする処理が出てきました。ここでは、2つのメソッドを用意してあります。initメソッドで初期化処理(ここでは、ダミーデータを作成しデータベースに保存しています)、そしてdoGetでデータベースからデータを取り出しています。
では、どのようにしてアクセスするのか、処理の流れを整理しましょう。まずは、データベースを利用するための準備部分についてです。
●データベース利用の準備●
1. EntityManagerFactoryの作成
Persistenceクラスの「createEntityManagerFactory」というメソッドを使い、引数にパーシスタンス・ユニット名を指定して呼び出します。これで、指定のパーシスタンス・ユニットを使ってEntityManagerFactoryインスタンスが作成されます。
2. EntityManagerの作成
このEntityManagerクラスに、データベースアクセスに関する各種の機能がまとめられています。それらを呼び出すことで、データベースを操作できるのです。
さあ、ようやくJPA経由でデータベースにアクセスする処理が出てきました。ここでは、2つのメソッドを用意してあります。initメソッドで初期化処理(ここでは、ダミーデータを作成しデータベースに保存しています)、そしてdoGetでデータベースからデータを取り出しています。
では、どのようにしてアクセスするのか、処理の流れを整理しましょう。まずは、データベースを利用するための準備部分についてです。
●データベース利用の準備●
1. EntityManagerFactoryの作成
protected EntityManagerFactory factory =最初に行うのは、EntityManagerFactoryインスタンスの作成です。これは、「エンティティマネージャ」と呼ばれるものを作成するためのファクトリクラスです。
Persistence.createEntityManagerFactory("mydataentity-persistance");
Persistenceクラスの「createEntityManagerFactory」というメソッドを使い、引数にパーシスタンス・ユニット名を指定して呼び出します。これで、指定のパーシスタンス・ユニットを使ってEntityManagerFactoryインスタンスが作成されます。
2. EntityManagerの作成
EntityManager manager = factory.createEntityManager();続いて、ファクトリからエンティティマネージャを作成します。このエンティティマネージャが、JPA利用の上でもっとも重要となるクラスです。エンティティマネージャは、EntityManagerFactoryの「createEntityManager」メソッドを呼び出して作成します。
このEntityManagerクラスに、データベースアクセスに関する各種の機能がまとめられています。それらを呼び出すことで、データベースを操作できるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class MyDataEntityServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected EntityManagerFactory factory =
Persistence.createEntityManagerFactory("mydataentity-persistance");
@Override
public void init() throws ServletException {
super.init();
EntityManager manager = factory.createEntityManager();
try {
manager.getTransaction().begin();
manager.persist(
new MyDataEntity("taro", "taro@yamada", "090-999-999")
);
manager.persist(
new MyDataEntity("hanako", "hanako@flower", "080-888-888")
);
manager.persist(
new MyDataEntity("sachiko", "sachiko@happy", "070-777-777")
);
manager.getTransaction().commit();
} finally {
manager.close();
}
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
EntityManager manager = factory.createEntityManager();
Query query = manager.createQuery("select i from MyDataEntity i");
List list = query.getResultList();
request.setAttribute("list", list);
RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
dispatcher.forward(request,response);
}
}
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る