+1 امتیاز
قبل در برنامه نویسی توسط (308 امتیاز)
ویرایش شده قبل توسط

در یک برنامه که از فریم ورک spring استفاده میکنیم و مدیریت تراکنش ها با spring می باشد بهتر است  Transactional@ را در کدام لایه قرار گیرد ؟ اگر در هر دو لایه قرار داده شود مشکلی به وجود می آید؟ در نهایت سرویس ما  در یک Transaction انجام می شود ؟

2 پاسخ

+1 امتیاز
قبل توسط (80 امتیاز)

به نظر من تراکنش باید در لایه سرویس باشه. چون ممکنه در یک تراکنش از دو DAO استفاده بشه.مثلا:

@Service
@Transactional
public class UserService {

    @Autowired
    private UserDAO userDAO;

    @Autowired
    private ProfileDAO profileDAO;

    public registerUser(User user) {
         // Two operation must complete together.
         profileDAO.save(user.getProfile);
         userDAO.save(user);
    }

}

 

قبل توسط (308 امتیاز)
در نهایت که از یک تراکنش استفاده می شود درسته؟؟
قبل توسط (1.1هزار امتیاز)
نه بستگی به Transaction propagation داره.
+1 امتیاز
قبل توسط (1.1هزار امتیاز)

معمولا بهتر است در معماری لایه ای که لایه های سرویس و Dao دارد، لایه سرویس transactional باشد و عملیات های هر متد لایه Dao اصطلاحا atomic باشد یعنی هر متد Dao یک کار مستقل انجام دهد و در صورت تمایل توسط توسعه دهنده در لایه سرویس و در یک Transaction آن عملیات های Dao را ترکیب کند.

در مورد سوال دومتون هم باید بگم بستگی به Transaction propagation داره.

سوالات مشابه

0 امتیاز
1 پاسخ 1.3هزار بازدید
0 امتیاز
1 پاسخ 670 بازدید
0 امتیاز
0 پاسخ 394 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط bahrambb (308 امتیاز)
+1 امتیاز
2 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
0 امتیاز
1 پاسخ 413 بازدید
...