Dưới đây là dòng chảy của ứng dụng của tôiJPA dữ liệu mùa xuân @transactional
Controller - dịch vụ - kho
Tại lớp dịch vụ chúng tôi có @Transactional
chú thích Chúng tôi cũng có jpa:repository
cấu hình nơi chúng tôi chỉ định người quản lý tổ chức và TXN giám đốc.
Nghi ngờ của tôi là tôi cảm thấy rằng người quản lý txn được chỉ định trong jpa:repositories
được xem xét và không có tác động nào khi chỉ định @Transactional
ở lớp dịch vụ. Ví dụ: lớp dịch vụ @Transactional
có thể được ánh xạ tới trình quản lý tùy chỉnh txn nơi mà kho lưu trữ được gọi bởi dịch vụ có thể có trình quản lý txn khác. Trong trường hợp đó, nó sẽ không tạo ra một vấn đề?
Ai đó có thể làm rõ chúng tôi có bao giờ cần đặt @Transactional
ở lớp dịch vụ khi chúng tôi đang sử dụng kho lưu trữ jpa không?
Giao dịch không được phân định ranh giới ở lớp DAO: một đơn vị công việc thường sẽ sử dụng một số DAO và được dàn xếp theo một phương thức dịch vụ giao dịch duy nhất. Tại sao bạn xác định 2 người quản lý giao dịch khác nhau vì bạn chỉ muốn một người quản lý giao dịch? –
Có ... Bởi vì khi bạn thực hiện nhiều cuộc gọi cơ sở dữ liệu, bạn muốn một giao dịch KHÔNG nhiều. Do đó bạn cần một giao dịch bắt đầu ở cấp độ dịch vụ. –
Đồng ý. Có một vấn đề thiết kế trong việc thực hiện hiện tại. Dịch vụ này gọi các repostories kết nối với hai lược đồ khác nhau (đây là các truy vấn chọn lọc thuần túy và không phải là JTA) .Đó là lý do các kho lưu trữ jpa được cấu hình với các nhà quản lý thực thể khác nhau và trình quản lý txn khác nhau. – lives