Her şeyden önce, işlem yönetimi, çok fazla performans yükü yaratacağı için (her farklı yöntemde uygun işlem izolasyon düzeyi ve yayılımı ile başa çıkmak için) DAO katmanında değil hizmet katmanında yapılmalıdır. Ayrıca, bir iş biriminin kapsamı , veri erişim katmanı yerine hizmet katmanından gelir: 2 veya daha fazla DAO ile uğraşması gereken bir iş süreci gerçekleştirdiğinizi hayal edin.
İnternette, burada , burada ve burada olduğu gibi bir yönü işaret eden birçok tartışma var .
Her neyse, bir röportaj olduğu için soruyu olduğu gibi kabul edelim. Benim açımdan, @Transactional
ek açıklamayı (veya XML yapılandırmasını) her iki yöntemde ve değer içeren bir işlem yayılımı ile kullanacaksınız REQUIRED
. Bu şekilde, bu yöntemlerden herhangi biri çağrıldığında ve önceden bir işlem yoksa, yeni bir işlem oluşturulur:
@Transactional
class MyDAO {
@Transactional(propagation = REQUIRED)
public void foo() {
}
@Transactional(propagation = REQUIRED)
public void bar() {
}
}
foo()
vebar()
paylaşmak ve 1 başarısız olursa başka bir 1 de geri döner? Biraz açıklama yapabilir misiniz?