Bu, şu anda sahip olduğum bir mimari sorun. EJB ve JPA'yı bir projeye entegre etmenin en iyi uygulamaları konusunda yardıma ihtiyacım var. Uygulamamın iş mantığını içeren hizmet katmanının işini yapacak olan EJB'lere sahip olmak istiyorum. Tam tersine, bu iki tabakayı mümkün olduğu kadar ayırmak için bir DAO fabrikası kullanarak EJB'lerin bir tutamağa sahip olacak bir DAO katmanına sahip olmak istiyorum. Bunu bildiğim için, DAO'yu EJB olarak da yapamıyorum, çünkü onların otomatik olarak enjekte edilmelerini istemiyorum, çünkü bunların fabrikada yaratılmasını istiyorum. o, EBA ile ayrılmış DAO ve Hizmet Katmanları ile JPA
public abstract class JPADataAccessorObject<K, E> implements DataAccessorObject<K, E> {
protected Class<E> entityClass;
protected EntityManager entityManager;
protected JPADataAccessorObject(Class<E> pEntityClass) {
this.entityManager = Persistence.createEntityManagerFactory("PortalEJB").createEntityManager();
this.entityClass = pEntityClass;
}
/* Other DAO functions (update, delete, create) */
}
bu kötü olduğunu düşünüyorum değildir: Yani bu çağrı benim soyut JPA DAO'sunda bulunduğu ... beni elle Şimdi
Persistence.createEntityManagerFactory("PortalEJB").createEntityManager();
kullanarak EntityManager oluşturmak yol açar? Bu sınıfın tüm somut uzantıları kalıcılık bağlamının yepyeni bir kopyasına sahip olacak ve garip davranışlar elde edeceğim. Ayrıca, bunu yaptığımda,
düşünmek Ben işlemleri kendim de hizmet katmanında yönetmek zorundayım.
- herhangi bir hizmet katmanın fonksiyonu önce işlem Oluştur/prosedürü: Ben böyle bir şey bunun için Yönleri oluşturmak üzere olduğu/prosedür
Yani benim sorular şunlardır:
- nasıl I Manag gerektiğini EntityManager?
- Bir kopyayı çoklu iş parçacığından koruyacak şekilde yönetecek bir çeşit JPA hizmet sınıfım olmalı mı?
- Korkunç bir hata yapıyorum, lütfen en iyi uygulamaları sağlayın.
Java EE'in hangi sürümü? –
GlassFish 3.1 üzerinde EJB 3.1, Java 1.6, JPA 2.0 (EclipseLink) kullanıyorum –