CRUDの基本 (3/5)
作成:2017-10-28 09:32
更新:2017-10-28 09:32
更新:2017-10-28 09:32
■ 特定のIDのエンティティを取得
もっと単純に「特定のIDのレコードをエンティティとして取得する」というだけなら、Queryを用意するような面倒な処理は必要ありません。もっとダイレクトなメソッドが用意されています。
EntityManagerクラスの「find」メソッドは、プライマリキー(ID)の値を指定してエンティティを取り出します。第1引数にはエンティティマネージャのClassインスタンスを、第2引数にはIDの値をそれぞれ指定します。
簡単な利用例を挙げておきましょう。下のリスト欄に、サンプルプロジェクトのMyDataEntityServletサーブレットのdoGetメソッドでfindを使いエンティティを取り出す処理を挙げておきました。例えば、以下のようにアクセスをすると、ID = 2のMyDataEntityインスタンスが取り出されます。
この例では、取り出したエンティティをentityという名前でリクエストに保管し、index.jspにフォワードしています。JSP側では、このentityを取り出して必要な処理をすれば良いでしょう。たとえば、こんな具合です。
このサンプルでは、doGetメソッドでfindを使いエンティティを取り出しています。MyDataEntity.classを第1引数に、パラメータから取り出したIDの値を第2引数に指定しています。
これで、指定したIDののMyDataEntityインスタンスが得られます。これをリクエストに保管すれば、JSP側でそれを取り出して表示できるというわけです。
Object 変数 = manager.find( [class] , 値 );
EntityManagerクラスの「find」メソッドは、プライマリキー(ID)の値を指定してエンティティを取り出します。第1引数にはエンティティマネージャのClassインスタンスを、第2引数にはIDの値をそれぞれ指定します。
簡単な利用例を挙げておきましょう。下のリスト欄に、サンプルプロジェクトのMyDataEntityServletサーブレットのdoGetメソッドでfindを使いエンティティを取り出す処理を挙げておきました。例えば、以下のようにアクセスをすると、ID = 2のMyDataEntityインスタンスが取り出されます。
http://localhost:8080/hello?id=2
この例では、取り出したエンティティをentityという名前でリクエストに保管し、index.jspにフォワードしています。JSP側では、このentityを取り出して必要な処理をすれば良いでしょう。たとえば、こんな具合です。
<% MyDataEntity entity = (MyDataEntity)request.getAttribute("entity"); %>
<%=entity.getId() %>
<%=entity.getName() %>
<%=entity.getMail() %>
<%=entity.getTel() %>
このサンプルでは、doGetメソッドでfindを使いエンティティを取り出しています。MyDataEntity.classを第1引数に、パラメータから取り出したIDの値を第2引数に指定しています。
MyDataEntity entity = manager.find(MyDataEntity.class, id);
これで、指定したIDののMyDataEntityインスタンスが得られます。これをリクエストに保管すれば、JSP側でそれを取り出して表示できるというわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id_str = request.getParameter("id"); int id = 0; try { id = Integer.parseInt(id_str); } catch(NumberFormatException e){ e.printStackTrace(); } EntityManager manager = factory.createEntityManager(); MyDataEntity entity = manager.find(MyDataEntity.class, id); request.setAttribute("entity", entity); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request,response); }
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る