Bạn thực sự có thể có lý do để đánh dấu các giao dịch như là chỉ-đọc.Giao dịch cho đọc có thể nhìn thực sự kỳ lạ và thường người ta không đánh dấu phương pháp cho các giao dịch trong trường hợp này. Nhưng JDBC sẽ tạo giao dịch dù sao, chỉ cần nó sẽ làm việc ở autocommit = true Nếu khác nhau tùy chọn đã không được thiết lập một cách rõ ràng.Nhưng không có bảo đảm rằng phương pháp của bạn không ghi vào cơ sở dữ liệu. Nếu bạn đánh dấu các phương pháp như @Transactional(readonly=true), mùa xuân sẽ thiết lập các giao dịch JDBC vào một chế độ chỉ đọc, do đó bạn sẽ dictate cho dù đó là thực sự có thể viết vào DB trong phạm vi của giao dịch này. Nếu bạn có kiến trúc khá rườm rà và một số thành viên trong nhóm có thể không đi theo con đường hợp lý, lá cờ này sẽ chỉ bạn đến nơi có vấn đề.Cũng chỉ đọc các giao dịch có thể được tối ưu hóa bởi DBs, nhưng điều này tất nhiên là DB cụ thể. Ví dụ như MySQL hỗ trợ thêm này chỉ có ở InnoDB bắt đầu từ 5.6.4 phiên bản.Nếu bạn không sử dụng JDBC trực tiếp, nhưng thay vì một ORM, mà có thể có vấn đề. Ví dụ, ngủ đông cộng đồng nói rằng làm việc ở bên ngoài giao dịch có thể gây ra hành vi không thể đoán trước. Điều này là bởi vì Hibernate sẽ mở giao dịch, nhưng nó sẽ không đóng nó ngày của riêng mình, do đó kết nối sẽ được trả lại vào hồ bơi kết nối với các giao dịch được không cam kết. Điều gì xảy ra sau đó? JDBC giữ im lặng, vì vậy đây là thực hiện cụ thể (MySQL cuộn lại giao dịch, Oracle afair cam kết nó). Điều này cũng có thể được cấu hình trên hồ bơi kết nối cấp độ (ví dụ như C3P0 cung cấp cho bạn tùy chọn, quay ngược lại theo mặc định).Một điều khi nói đến Hibernate, Spring bộ FlushMode để hướng dẫn sử DỤNG trong trường hợp giao dịch chỉ-đọc, dẫn đến tối ưu hóa khác như không cần phải cho bẩn sẽ kiểm tra.Bạn có thể muốn ghi đè, hoặc thiết lập một cách rõ ràng mức độ sự cô lập của giao dịch. Này tác động đọc giao dịch cũng như kể từ khi bạn làm hoặc không muốn đọc khoản thay đổi, được tiếp xúc với ma lần đọc, vv.Tổng kết - bạn có thể đi cả hai cách, nhưng bạn cần phải hiểu những hậu quả.
đang được dịch, vui lòng đợi..
