Yayında, @Transactional
ile açıklamalı bir yöntem, zaten mevcut değilse yeni bir işlem alacak, ancak bir işlem yönteminin herhangi bir işlem olmayan birinden çağrılırsa işlem. İşte kod.@ Başka bir yöntemden başka bir yöntemden çağrılan işlem yöntemi, bir işlem elde edemiyor
@Component
public class FooDao {
private EntityManager entityManager;
@PersistenceContext
protected void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Transactional
public Object save(Object bean) {
return this.entityManager.merge(bean);
}
public Object saveWrap(Object bean) {
return save(bean);
}
}
@Component
public class FooService {
private FooDao fooDao;
public void save(Object bean) {
this.fooDao.saveWrap(bean); // doesn't work.
this.fooDao.save(bean); // works
}
}
saveWrap()
işlem olup save()
çağırıyor ama saveWrap()
herhangi bir değişiklik kalıcı olmaz düzenli yöntemdir.
İlkbahar 3 ve Hazırda Bekletme 3 kullanıyorum. Burada ne yapıyorum? Teşekkürler.
@Transactional ile saveWrap yöntemini ek açıklamada herhangi bir zarar yoktur. İşlem yayılımı ile varsayılan davranış GEREKTİRİR, yani iç içe geçmiş bir işlem (yani, bir işlemde iseniz ve daha sonra da [Transactional] olan başka bir yöntemi çağırırsanız), yalnızca mevcut işlemi kullanmak ve OLMAYACAKSINIZ başka bir tane korktuğunuz şey ise) –
proxy için cglib kullanımı hakkında ne dersiniz? Ben cglib vekil tavsiyesini, aynı sınıf içinde bile çağırdığınız her yöntemi hatırlıyorum. – hiway