Chỉ muốn ý kiến chuyên gia của bạn về quản lý giao dịch khai báo cho Spring. Đây là thiết lập của tôi:Mùa xuân - Giao dịch chỉ đọc
- lớp DAO là đồng bằng cũ JDBC sử dụng Spring JdbcTemplate (Không Hibernate vv)
- lớp Service là POJO với các giao dịch khai báo như sau -
save*, readonly = false, rollback for Throwable
Mọi thứ hoạt động tốt với trên thiết lập. Tuy nhiên, khi tôi nói get*, readonly = true
, tôi thấy lỗi trong tệp nhật ký của mình là Database connection cannot be marked as readonly
. Điều này xảy ra cho tất cả các phương thức * nhận được trong lớp dịch vụ.
Bây giờ câu hỏi của tôi là:
A. Tôi có phải thiết lập get*
như readonly? Tất cả các phương thức get*
của tôi đều là các hoạt động DB thuần túy đọc. Tôi không muốn chạy chúng trong bất kỳ ngữ cảnh giao dịch nào. Làm thế nào nghiêm trọng là lỗi ở trên?
B. Khi tôi xóa cấu hình get*
, tôi không thấy lỗi. Hơn nữa, tất cả các hoạt động get*
đơn giản của tôi được thực hiện mà không cần giao dịch. Đây có phải là con đường để đi?
C. Tại sao mọi người lại muốn có phương thức giao dịch trong đó readonly = true
? Có ý nghĩa thiết thực nào của cấu hình này không?
Cảm ơn bạn! Như mọi khi, câu trả lời của bạn được đánh giá cao!
Cảm ơn bạn Bozho! Xóa trong ngày. Tôi đoán tôi sẽ loại bỏ cấu hình get * khi tôi đang sử dụng JDBC đơn giản. – AAK
Nếu không có giao dịch chỉ đọc, bạn cũng tự mở cho mình 'org.hibernate.LazyInitializationException' đáng sợ. – HDave
Bằng cách nào tôi có thể tránh org.hibernate.LazyInitializationException trong khi kiện quản lý authntication waffle. –