DAO ve Servis sınıfları için kullanılması gereken hangi CDI kapsamı. Ben Tomcat üzerinde konuşlandırılan CDI kullanıyorum aynı şekilde Spring framework kullanmak için kullanıyorum. EntityManager DeltaSpike JPA modulehttp kullanılarak enjekte edilirSadece JPA, CDI (OpenWebBeans + Deltaspike JPA modülü), JSF kullanarak uygulamayı kurmaya çalışıyorum
public abstract class GenericDaoJpa<T> implements GenericDao<T> {
private static final Log logger = LogFactory.getLog(GenericDaoJpa.class);
@Inject
protected EntityManager entityManager;
private Class<T> type;
: //deltaspike.apache.org/jpa.html Ben DAO böyle GenericDAOImpl (ilk birkaç satır) olarak adlandırılan var. Bu GenericDao daha sonra servis sınıfları tarafından kullanılan beton DAO (UserDao vb.) Tarafından devralınır. örnek UserServiceImpl için
:
public class UserServiceImpl implements UserService {
private static final Log logger = LogFactory.getLog(UserServiceImpl.class);
@Inject
private UserDao userDao;
@Transactional
public void saveUser(UserDto user) throws UserServiceException {
try {
User u = new User(user);
userDao.create(u);
} catch (Exception e) {
logger.error("Error while creating user.", e);
throw new UserServiceException("Error while creating user.");
}
}
}
onlar tekil olacağını ilkbaharda aksine Bağımlı kapsamını olacak CDI bu şekilde DAO ve Servis sınıf hem kullanma. Bu nedenle her müşterinin yeni örneği enjekte edilecektir. DAO ve Servis sınıflarındaki kapsamları ApplicationScope'a değiştirmeliyim? Ama sonra şartname ile seri hale getirilebilir enjekte edilen tüm sınıfları yapmak zorundayım. Dao sınıfları durumunda bu bir sorun olabilir, EntityManager daha sonra geçici olarak işaretlenmelidir? Bir
Ben herhangi bir önerileri için sevinirim.
teşekkürler. @ApplicationScoped'i kullanmam durumunda, ilkbaharda olduğu gibi fasulyede (ilkbaharda kapsamlanan tekil) aynı anda birçok kez erişilmesini beklerdim. Bu nedenle herhangi bir performans problemi olmayacaktı. Sadece benim parçamdan kaygılanmak, sınıf ipliklerini güvenli hale getirmek olurdu. Veya eşzamanlılık CDI konteyner tarafından otomatik olarak ele değil mi? –
Eşzamanlılık CDI kabı tarafından ele alınmaz. –