2010-02-12 9 views
6

Theo như tôi hiểu, DataSourceTransactionManager gắn kết một kết nối JDBC từ DataSource đã chỉ định tới luồng hiện tại, cho phép một kết nối ràng buộc luồng trên mỗi nguồn dữ liệu. Nếu đó là một nhóm các kết nối, nó sẽ có một trong các kết nối có sẵn.Làm thế nào chính xác JdbcTemplate với TransactionManager làm việc cùng nhau?

Sau này nếu tôi sử dụng JdbcTemplate bên trong một giao dịch, nó sẽ nắm bắt một kết nối được ràng buộc bởi DataSourceTransactionManager. Tôi có hiểu cơ chế chính xác không? Có bất kỳ yêu cầu nào về việc định nghĩa bean quản lý giao dịch (ví dụ: singleton) không?

Trả lời

3

Bạn đã mô tả khá nhiều cách hoạt động của nó. Logic đồng bộ hóa giao dịch của Spring có trách nhiệm khá đáng sợ để giữ các giao dịch được đồng bộ hóa trên JDBC, Hibernate, JPA, vv và kết quả cuối cùng là khá liền mạch.

Người quản lý giao dịch phải là người độc thân, vâng. Bất kỳ giao dịch nào được quản lý bởi chỉ một người quản lý giao dịch và nếu bạn có một số người trong số họ nằm xung quanh, bạn đang ở trong một thế giới đau đớn.

+0

Cảm ơn câu trả lời! –

+1

Tuổi thọ của kết nối thu được từ DataSource là gì? –

0

Giá trị mặc định là 15 giây đối với tuổi thọ của kết nối có được từ DataSource. Và bạn có thể chỉ định thời gian chờ kết nối tối đa một cách rõ ràng trong kết nối thích hợp của bạn.