EntityManagerFactory uygulamasını web uygulamasında (jsp/servlet) elde etmenin en iyi yolu nedir? bu iyi bir yol When should EntityManagerFactory instance be created/opened?, mi yoksa Bunlar ağır konum ve onlar uygulama kapsamında olman gerekiyorduEntityManagerFactory almak için en iyi yöntem
cevap
... iyi JNDI veya başka bir şeyden kaynaklanıyor olsun. Bu nedenle, bunları uygulama başlangıcında açmanız ve uygulama kapatma üzerinde kapatmanız gerekir.
Bu nasıl yapılır? Hedef kabınıza göre değişir. EJB 3.x'i (Glassfish, JBoss AS, vb.) Destekliyor mu?
@Stateless
public class FooService {
@PersistenceContext
private EntityManager em;
public Foo find(Long id) {
return em.find(Foo.class, id);
}
// ...
}
hedef konteyner Eğer burada: Eğer öyleyse, o zaman sadece @PersistenceContext
ile olağan şekilde EJB'ler JPA işi bütün eğer (ne işlemlerle ilgili) onları açma/kapama konusunda endişelenmenize gerek yok EJB'leri (örn. Tomcat, Jetty, vb.) ve OpenEJB gibi bir EJB eklentisini desteklemenin bir nedeni de yoktur ve bu nedenle EntityManager
s (ve işlemler) oluşturma ile elle oynamanızdır, o zaman en iyi bahsiniz ServletContextListener
.
@WebListener
public class EMF implements ServletContextListener {
private static EntityManagerFactory emf;
@Override
public void contextInitialized(ServletContextEvent event) {
emf = Persistence.createEntityManagerFactory("unitname");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
emf.close();
}
public static EntityManager createEntityManager() {
if (emf == null) {
throw new IllegalStateException("Context is not initialized yet.");
}
return emf.createEntityManager();
}
}
:
(not: Servlet 3.0 önce bu sınıf web.xml
yerine @WebListener
içinde <listener>
tarafından tescil edilmesi gerekmektedir) olarak kullanılabilir: Burada bir temel başlama örnek
EntityManager em = EMF.createEntityManager();
// ...
- 1. GWT uygulamasını parametreleştirmek için en iyi yöntem?
- 2. PHP float kullanımı için en iyi yöntem
- 3. İç/anonim sınıflar için en iyi yöntem
- 4. En iyi zaman uyumsuz yöntem
- 5. En iyi yöntem UI rehberi?
- 6. WPF'de form veri doğrulaması hakkında bilgi almak için en iyi yöntem nedir?
- 7. .net MVC kullanarak SQL Server 2005'e csv veya excel dosyası almak için en iyi yöntem
- 8. Eclipse'de SSH Uzak Projeli Subclipse'i kullanmak için en iyi yöntem
- 9. Android: iki konum arasındaki mesafeyi hesaplamak için en iyi yöntem
- 10. Küçültülmüş dosyaları ve dağıtımı/geliştirmeyi sürdürmek için en iyi yöntem
- 11. ASP.NET MVC'deki koşullu çıktı için en iyi yöntem?
- 12. Oylama yapmak için en iyi yöntem oylama veritabanı yapısı
- 13. Ansible: sudoers listesinin bakımı için en iyi yöntem
- 14. Büyük Grails uygulamasını modüle etmek için en iyi yöntem nedir?
- 15. ASP.NET MVC 3 - Kullanım için en iyi yöntem Model görünümünde
- 16. REST API'sı kullanıcıları sınırlamak için en iyi yöntem nedir?
- 17. Selenyum testleri ve birim testleri düzenlemek için en iyi yöntem
- 18. Yeniden kullanılabilir kod yazmak için en iyi yöntem
- 19. Bir mysql veri sürümlendirme sistemi için en iyi yöntem
- 20. Oturum açıldıktan sonra CurrentUser uygulamasını depolamak için en iyi yöntem
- 21. Swift içinde html ayrıştırmak için en iyi yöntem nedir?
- 22. ExtJS'de sınıfları/özellikleri geçersiz kılmak için en iyi yöntem?
- 23. Çoklu seçim web arayüzü için en iyi yöntem mi?
- 24. Salatalığın ortak adımlarını devam ettirmek için en iyi yöntem
- 25. MVC web sitesinin Sitecore'a geçişi için en iyi yöntem
- 26. ASP.NET Web API'sı ile hata işleme için en iyi yöntem
- 27. Basit tür diğer adları - Oracle için en iyi yöntem
- 28. iOS'ta çevrimdışı depolama alanıyla webservice'i eşitlemek için en iyi yöntem
- 29. Asp.net MVC Kaynak Dosyaları İçin En İyi Yöntem
- 30. Kodda SQL sorguları düzenlemek için en iyi yöntem nedir?
Her zamanki gibi mükemmel bir örnek, sadece "UnitName" özniteliği olmadan @PersistenceContext kullanırken bunu eklemek istedim, (i n bir bildirim dışı yol) "persistence.xml" içinde tanımlanan tek/varsayılan kalıcılık biriminin kullanılması. Birden fazla veri kaynağı/kalıcılık birimi varsa, hangisinin olduğuyla ilgili bir karışıklığa yol açabilir. –
Başka nelerin eksik olduğundan emin değilim, cevabınızı takip ediyorum ancak bir çalışma zamanı hatası var mı? > Nedeniyle: org.springframework.beans.factory.NoSuchBeanDefinitionException: [javax.persistence.EntityManagerFactory] türünde benzersiz bir fasulye tanımlanmadı: beklenen tek fasülye bulundu ancak 0: – huahsin68
@ huahsin68: Asıl soru hiç bir şekilde Bahar içermiyor ve ben de Spring'i yapmam. Sadece "Soru Sor" tuşuna basın. – BalusC