2009-05-14 14 views
5

Tôi chỉ di chuyển một trong các ứng dụng của mình từ JDBC thuần túy sang JDBCTemplate của Spring. Tôi đã tự hỏi làm thế nào để tạo ra một khóa viết cho một bảng. Tôi chỉ thực hiện một truy vấn "LOCK TABLE foo" hoặc là có một cách tổng quát để làm điều này trong JDBCTemplate?Spring JDBCTemplate Bảng Locking với MySQL

Cảm ơn!

Trả lời

9

JdbcTemplate sử dụng một nguồn dữ liệu, vì vậy nó không đảm bảo rằng bạn sẽ sử dụng cùng một kết nối cho câu lệnh LOCK TABLE và bất cứ điều gì bạn sẽ làm trong cuộc gọi tiếp theo tới JdbcTemplate. Vì vậy, điều quan trọng là bạn làm điều này trong một giao dịch. Thiết lập một PlatformTransactionManager, hoặc là một DataSourceTransactionManager trên DataSource của JdbcTemplate, hoặc một JtaTransactionManager nếu JdbcTemplate đang sử dụng một nguồn cung cấp dữ liệu JNDI do container cung cấp. Bạn có thể chú thích phương thức của mình dưới dạng @Transactional hoặc tạo một giao dịch theo lập trình bằng cách sử dụng PlatformTransactionManager.