Tôi đang cố gắng hiểu JTA và đang sử dụng Bitronix làm Người quản lý giao dịch được lựa chọn (chỉ vì lợi ích của việc học và hiểu). Tôi đang xem mã bên trong Bitronix reference guide here và tự hỏi mình: Nếu tôi đang sử dụng JDBC, bản thân nó là giao dịch (Connection
có thể được cam kết/cuộn lại), tại sao tôi lại muốn viết mã như thế? !?!Java EE: Tại sao sử dụng JTA trực tiếp?
Bây giờ có thể điểm của đoạn mã đó chỉ đơn giản là minh họa cách sử dụng Bitronix/JTA trên kho dữ liệu giao dịch hiện có, nhưng tôi vẫn không nhận được những lợi ích vốn có mà nó cung cấp. Sau đó, đoạn mã này khiến tôi suy nghĩ: "Nếu chỉ có hai nguồn dữ liệu chính bạn sử dụng là cơ sở dữ liệu và nhà môi giới thư, và bạn sử dụng JDBC/JMS để giao tiếp với họ tương ứng, và hai tiêu chuẩn này (JDBC/JMS) đã được giao dịch, sau đó tại sao bạn sẽ cần phải sử dụng JTA ở tất cả?!? "
JTA là một loại Java EE API" bên trong "mà JDBC, JPA, JMS, v.v ... sử dụng; và chỉ được công khai tiếp xúc với 1% ers trên mạng mà muốn làm điều gì đó điên rồ với nó? Hoặc tôi có thiếu ý tưởng/ứng dụng của JTA hoàn toàn không? Tôi đoán tôi có thể hình dung ra hai trường hợp sử dụng không phải JDBC và không phải JMS để đánh trực tiếp vào JTA, nhưng vì tôi quá mờ nhạt về JTA ở nơi đầu tiên tôi không biết liệu những trường hợp này có off-track hay không. :
- Có thể bạn có hệ thống I/O phức tạp trong ứng dụng của mình và có nhiều chủ đề đọc/ghi từ cùng một tệp trên đĩa. Có lẽ bạn sẽ có mỗi thread sử dụng một giao dịch để ghi vào tập tin này. (Có?!? Không?!?)
- Có lẽ bạn có một máy trạng thái POJO đại diện cho trạng thái của một hệ thống và nhiều luồng có thể sửa đổi máy. Có lẽ bạn sẽ có mỗi thread sử dụng một giao dịch để thay đổi trạng thái của máy.
Tôi đoán ở thư mục gốc của câu hỏi của tôi là (Có Không?!?!?):
- Nếu JPA của tôi (Hibernate) và/hoặc các cuộc gọi JDBC đã giao dịch, tại sao tôi muốn bọc chúng bên trong JTA bắt đầu-> commit/rollback block? Ditto cho JMS và hệ thống nhắn tin.
- Bên ngoài JPA/JDBC/JMS, trường hợp sử dụng nào tồn tại để sử dụng JTA để giao dịch một loạt các hoạt động?
Xin cảm ơn trước!
Cảm ơn câu trả lời tuyệt vời @Justin (+1). Điều gì về các ví dụ tôi trích dẫn (đọc tập tin, thao tác nhà nước, vv)? Là những trường hợp khi một người muốn giao dịch (tại sao hoặc tại sao không)? Nếu vậy, tôi có cần phải thực hiện 'XAResource' của riêng mình cho họ không? ** Một lần nữa, đối với tiền thưởng, tôi đang tìm một bộ hướng dẫn để sử dụng khi quyết định có nên giao dịch hay không. ** Cảm ơn bạn một lần nữa! – IAmYourFaja
@AdamTannon cảm ơn vì +1! Tôi đã thêm một số dòng hướng dẫn của riêng mình, tôi hy vọng chúng hữu ích. – Justin
Câu trả lời tuyệt vời, tuyệt vời. Cảm ơn bạn! – IAmYourFaja