Share & grow the worlds knowledge!
We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
1 Answer
class Service { @Transactional public void addUserProduct(long userId, long productId) { userRepo.increaseProductCount(userId); productRepo.updateProductOwner(productId, userId); userProductRepo.addUserProduct(userId, productId); } }
Tuy nhiên không nên làm như vậy vì tầng service là tầng chuyên xử lý nghiệp vụ, ví dụ như tính toán, tổng hợp dữ liệu, và nó không bao giờ nên phụ thuộc vào transaction, giả sử em bổ sung thêm 1 nghiệp vụ không liên quan gì đến transaction thế này:
class Service { @Transactional public void addUserProduct(long userId, long productId) { Thread.sleep(2000); sendNewUserProductToKafka(userId, productId); userRepo.increaseProductCount(userId); productRepo.updateProductOwner(productId, userId); userProductRepo.addUserProduct(userId, productId); } }
Thì có phải là transaction đang bị kéo dài thêm 2000 và có thể gây ra những lỗi bất ngờ thì sao.
Nên cách tốt nhất là em nên tạo ra 1 repo và gọi tổng hợp như thế này em ạ. Từ entityManager tương đương với context.Context
trong go em sẽ có thể chạy các query tuỳ ý và sau đó commit 1 thể.
-
0
- Reply
- Questions 1.0K
- Answers 2.2K
- Best Answers 132
- Users 489
Related Questions
Recent Activities
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm