隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          eclipse + JBoss 5 + EJB3開發指南(13):在Servlet中訪問應用程序管制EntityManager對象

          本文為原創,如需轉載,請注明作者和出處,謝謝!

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

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

          @PersistenceContext(unitName="myentity")
          protected EntityManager em;
             
              上面的代碼需要放在任意一個SessionBean的類中,EJB容器會自動創建EntityManager對象。但如果要在Servlet中直接訪問EntityManager對象,需要使用EntityManagerFactory接口的createEntityManager方法來創建EntityManager對象,在使用完EntityManagerFactory和EntityManager對象后,可以使用相應的close方方關閉這兩個對象。在編寫Servlet中訪問應用程序管制實體Bean之前,需要修改一個persistence.xml文件的內容,修改后的結果如下:
          <?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>

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

              下面是訪問EntityManager對象的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開發指南(14):消息驅動Bean



          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          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) 評論(2)  編輯  收藏 所屬分類: java 原創ejb3JBoss

          評論

          # re: eclipse + JBoss 5 + EJB3開發指南(13):在Servlet中訪問應用程序管制EntityManager對象  回復  更多評論   

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

          # re: eclipse + JBoss 5 + EJB3開發指南(13):在Servlet中訪問應用程序管制EntityManager對象  回復  更多評論   

          問下,你下面怎么有這個GG的廣告,我的BLOG下面沒有呢?
          我的博客搬到新家了 http://www.javaly.cn, 順便給你推薦一個導航網站 http://www.510gougou.com
          2009-06-09 17:18 | 找個美女做老婆
          主站蜘蛛池模板: 阿巴嘎旗| 天门市| 吉水县| 永顺县| 简阳市| 青河县| 微山县| 五指山市| 常德市| 庄浪县| 北川| 铁岭县| 新田县| 砀山县| 扎赉特旗| 油尖旺区| 碌曲县| 县级市| 卓尼县| 安陆市| 蚌埠市| 鄂托克旗| 镶黄旗| 融水| 兴国县| 九台市| 曲水县| 宝应县| 班戈县| 乐业县| 塘沽区| 临邑县| 五指山市| 永吉县| 肥城市| 简阳市| 开阳县| 永登县| 贵定县| 留坝县| 哈巴河县|