Tôi đang cố gắng tìm ra cách tốt nhất để xử lý giao dịch ở cấp đối tượng (không phải cấp cơ sở dữ liệu). Ví dụ ngắn: 4 đối tượng A, B, C và D. A bắt đầu giao dịch và gọi phương thức trong B và C. Whithin giao dịch C này cũng đang gọi D. Các phương thức được gọi là không phải lúc nào cũng tham gia vào giao dịch này, nhưng cũng có thể được gọi riêng. Có bất kỳ mẫu nào để quản lý giao dịch ở cấp đối tượng không?Mẫu quản lý giao dịch cấp đối tượng
Tôi đã không thực sự tìm thấy điều gì đó, vì vậy tôi đã đưa ra điều này: Sử dụng TransactionContext, nơi người ta có thể đăng ký TransactionListeners. Nếu một giao dịch được bắt đầu sử dụng TransactionContext, thì nó sẽ tiêm giao dịch đang chạy vào mỗi người nghe đã đăng ký, do đó sẽ sử dụng một giao dịch đang chạy hoặc ngược lại sẽ bắt đầu một giao dịch nếu cần. Bằng cách này tôi khá tự do để quyết định thời tiết tôi muốn một đối tượng tham gia vào giao dịch của tôi hay không.
Sự cố xảy ra khi có chuỗi gọi đối tượng như trên. Khi bắt đầu giao dịch, tôi chỉ biết rằng B và C phải tham gia vào giao dịch để tôi thêm chúng vào TransactionContext. Nhưng còn D thì sao? Tôi thực sự không muốn chuyển giao TransactionContext tới B và C.
Tôi sẽ đánh giá cao một số đầu vào về cách tiếp cận của tôi cũng như một số gợi ý cho các mẫu đã được chứng minh (thậm chí tốt hơn).
Tôi biết rằng Spring và máy chủ ứng dụng cũng đang cung cấp dịch vụ này, nhưng tôi không muốn sử dụng một trong số chúng. Nhưng cảm ơn cho con trỏ đến Spring transactionmanagemenr. Tôi sẽ đọc cái đó. – MicSim
Trong Java nó là một mẫu khá chuẩn và nhiều thư viện thực hiện nó. – Loki
Tại sao bạn không muốn sử dụng JTA hoặc Spring? – Loki