Trong ứng dụng của tôi, có nhiều bước mà nhiều cam kết với cơ sở dữ liệu sẽ được thực hiện tuần tự thông qua nhiều phương thức. Ví dụ:Giao dịch lồng nhau sử dụng Spring và Hibernate
A -> B -> C
-> D
->E
-> F
-> G
Một cuộc gọi B gọi là C. Rồi B gọi D. D cuộc gọi E v.v. Tất cả các phương thức này đều có một số thao tác cơ sở dữ liệu. Khi tôi hiểu từ PROPAGATION_REQUIRED
(quản lý giao dịch khai báo - cách đề xuất mùa xuân), nếu E hoàn tất thành công, giao dịch (và hoạt động trong E sẽ được cam kết). Bây giờ, do một số ngoại lệ, F sẽ dẫn đến một sự quay lại. Tôi muốn có mọi thứ cuộn lại bắt đầu từ những gì A đã làm. Điều này có thể thông qua quản lý giao dịch khai báo không? Hoặc tôi nên sử dụng Quản lý giao dịch có lập trình?
Cảm ơn bạn.
tôi sẽ hoàn toàn đồng ý với bạn cho đến khi tôi đọc (ở đâu đó - không thể tìm thấy nó ở đâu) thì cam kết đó sẽ xảy ra ngay sau khi phương thức hoàn thành. Tôi nghĩ rằng tôi sai trong sự hiểu biết ở đây. Khi nào thì cam kết thực sự xảy ra (chúng ta không phải làm điều đó một cách rõ ràng. Đúng không?)? –
cam kết sẽ xảy ra khi phương thức bắt đầu giao dịch hoàn tất. Đó là 'A' trong trường hợp này là – Bozho
. tuyệt quá. Cảm ơn bạn rất nhiều. –