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入門」に戻る