首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

EJB 3 在 Servlet 中訪問 EntityManager:應用程式管理持久化上下文實戰

     編輯:J2EE

前文使用容器管理 EntityManager(由 EJB 容器建立、生命週期全管)。Servlet 中需改用應用程式管理模式:透過 EntityManagerFactory.createEntityManager() 手動建立,用畢關閉。

persistence.xml 關鍵修改

  1. persistence-unit 的 transaction-type="RESOURCE_LOCAL"(非 JTA)。
  2. jta-data-source 改為 non-jta-data-source(值不變)。
  3. 保留 Hibernate 方言、SQL 顯示、格式化等屬性。

此模式下不可使用 @PersistenceContext 讓容器自動注入,若需容器管理可另定義持久化單元。

Servlet 代碼範例

public class MyServlet extends HttpServlet {
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("myentity");
        EntityManager em = emf.createEntityManager();
        DateBean db = em.find(DateBean.class, 1);
        resp.getWriter().println(db.getMyDate());
        em.close();
        emf.close();
    }
}

關鍵點:手動建立 EMF/EM、執行查詢、必須成對關閉 避免資源洩漏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved