隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          eclipse + JBoss 5 + EJB3開發(fā)指南(13):在Servlet中訪問應(yīng)用程序管制EntityManager對(duì)象

          本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!

          上一篇:eclipse + JBoss 5 + EJB3開發(fā)指南(12):使用命名查詢執(zhí)行JPQL

               在前面的文章中使用的都是容器管制的EntityManager對(duì)象。這類EntityManager對(duì)象是由EJB容器創(chuàng)建的,在這種情況下,EntityManager對(duì)象的生命周期完全由EJB容器來管理。在SessionBean中可以使用如下的代碼來通知EJB容器創(chuàng)建EntityManager對(duì)象:

          @PersistenceContext(unitName="myentity")
          protected EntityManager em;
             
              上面的代碼需要放在任意一個(gè)SessionBean的類中,EJB容器會(huì)自動(dòng)創(chuàng)建EntityManager對(duì)象。但如果要在Servlet中直接訪問EntityManager對(duì)象,需要使用EntityManagerFactory接口的createEntityManager方法來創(chuàng)建EntityManager對(duì)象,在使用完EntityManagerFactory和EntityManager對(duì)象后,可以使用相應(yīng)的close方方關(guān)閉這兩個(gè)對(duì)象。在編寫Servlet中訪問應(yīng)用程序管制實(shí)體Bean之前,需要修改一個(gè)persistence.xml文件的內(nèi)容,修改后的結(jié)果如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <persistence xmlns="http://java.sun.com/xml/ns/persistence"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/persistence
              http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

              version
          ="1.0">

              
          <persistence-unit name="myentity" transaction-type="RESOURCE_LOCAL">
                  
          <non-jta-data-source>java:/MyPIM</non-jta-data-source>  
                  <properties>
                      
          <property name="hibernate.hbm2ddl.auto" value="none" />
                      
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
                      
          <property name="hibernate.format_sql" value="true" />
                      
          <property name="hibernate.show_sql" value="true" />
                  
          </properties>
              
          </persistence-unit>
          </persistence>

              修改的地方有如下兩個(gè):
              1.  將<persistence-unit>元素的transaction-type屬性值設(shè)為RESUORCE_LOCAL。
              2,  將<jta-data-source>元素改成<non-jta-data-source>,元素值不變。
             
              要注意,這時(shí)不能使用@PersistenceContext注釋通知EJB容器自動(dòng)創(chuàng)建EntityManager對(duì)象了,如果仍然想這樣做,可以定義其他的<persistence-unit>元素。

              下面是訪問EntityManager對(duì)象的Servlet代碼:

          package servlet;

          import java.io.IOException;
          import javax.persistence.EntityManager;
          import javax.persistence.EntityManagerFactory;
          import javax.persistence.Persistence;
          import javax.persistence.PersistenceContext;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import entity.DateBean;

          public class MyServlet extends HttpServlet
          {
              
          private static final long serialVersionUID = 1L;
              
          protected void service(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException
              {
                  EntityManagerFactory emf 
          = Persistence.createEntityManagerFactory("myentity");
                  EntityManager newEM 
          = emf.createEntityManager();
                  DateBean db 
          = newEM.find(DateBean.class1);
                  response.getWriter().println(db.getMyDate());
                  newEM.close();  
                  emf.close();
              }
          }

          下一篇:eclipse + JBoss 5 + EJB3開發(fā)指南(14):消息驅(qū)動(dòng)Bean



          Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺(tái)灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-06-06 14:07 銀河使者 閱讀(2208) 評(píng)論(2)  編輯  收藏 所屬分類: java 原創(chuàng)ejb3JBoss

          評(píng)論

          # re: eclipse + JBoss 5 + EJB3開發(fā)指南(13):在Servlet中訪問應(yīng)用程序管制EntityManager對(duì)象  回復(fù)  更多評(píng)論   

          我的博客搬到新家了 http://www.javaly.cn, 順便給你推薦一個(gè)導(dǎo)航網(wǎng)站 http://www.510gougou.com
          2009-06-09 17:18 | 找個(gè)美女做老婆

          # re: eclipse + JBoss 5 + EJB3開發(fā)指南(13):在Servlet中訪問應(yīng)用程序管制EntityManager對(duì)象  回復(fù)  更多評(píng)論   

          問下,你下面怎么有這個(gè)GG的廣告,我的BLOG下面沒有呢?
          我的博客搬到新家了 http://www.javaly.cn, 順便給你推薦一個(gè)導(dǎo)航網(wǎng)站 http://www.510gougou.com
          2009-06-09 17:18 | 找個(gè)美女做老婆
          主站蜘蛛池模板: 布尔津县| 岳普湖县| 台东市| 那坡县| 太白县| 龙州县| 虹口区| 理塘县| 漾濞| 株洲市| 都江堰市| 溧水县| 赤壁市| 清镇市| 福贡县| 柯坪县| 武城县| 武邑县| 睢宁县| 东乌珠穆沁旗| 湟源县| 太谷县| 文水县| 宽甸| 南木林县| 大竹县| 公安县| 富锦市| 南宫市| 安顺市| 珲春市| 原平市| 蒲城县| 平度市| 托克托县| 怀集县| 育儿| 大邑县| 琼中| 富裕县| 蚌埠市|