You might actually have reasons to mark transactions as read-only.Tran dịch - You might actually have reasons to mark transactions as read-only.Tran Việt làm thế nào để nói

You might actually have reasons to

You might actually have reasons to mark transactions as read-only.

Transactions for reading might look indeed strange and often people don't mark methods for transactions in this case. But JDBC will create transaction anyway, it's just it will be working in autocommit=true if different option wasn't set explicitly.
But there is no guarantee that your method doesn't write into the database. If you mark method as @Transactional(readonly=true), Spring will set the JDBC transaction into a read-only mode, thus you'll dictate whether it's actually possible to write into DB in scope of this transaction. If you architecture is pretty cumbersome and some team members might not follow reasonable path, this flag would point you to the problematic place.
Also read-only transactions can be optimized by DBs, but this of course is DB specific. E.g. MySQL added support for this only in InnoDB starting from 5.6.4 version.
If you're not using JDBC directly, but rather an ORM, that might be problematic. For instance Hibernate community says that working outside of transaction might cause unpredictable behavior. This is because Hibernate will open transaction, but it won't close it on its own, thus connection will be returned to the Connection Pool with transaction being not committed. What happens then? JDBC keeps silence, thus this is implementation specific (MySQL rolls back transaction, Oracle afair commits it). This also can be configured on Connection Pool level (e.g. C3P0 gives you such an option, rollback by default).
Another thing when it comes to Hibernate, Spring sets the FlushMode to MANUAL in case of read-only transactions, which leads to other optimizations like no need for dirty checks.
You may want to override or set explicitly the transaction isolation level. This impacts read-transactions as well since you do or don't want to read uncommitted changes, be exposed to phantom reads, etc.
To sum up - you can go both ways, but you need to understand consequences.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
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..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
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ể trông thật lạ và thường mọi người không đánh dấu các phương pháp cho các giao dịch trong trường hợp này. Nhưng JDBC sẽ tạo ra giao dịch dù sao, nó chỉ là nó sẽ được làm việc trong autocommit = true nếu tùy chọn khác nhau đã không được thiết lập một cách rõ ràng.
Nhưng không có gì đảm bảo 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 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ù nó thực sự có thể viết vào DB trong phạm vi giao dịch này. Nếu bạn kiến trúc là khá cồng kềnh và một số thành viên trong nhóm có thể không đi theo con đường hợp lý, cờ này sẽ chỉ cho 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 thêm hỗ trợ cho việc này chỉ trong InnoDB bắt đầu từ phiên bản 5.6.4.
Nếu bạn không sử dụng JDBC trực tiếp, mà đúng hơn là một ORM, mà có thể là có vấn đề. Ví dụ cộng đồng Hibernate nói rằng bên ngoài của giao dịch làm việc 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ó vào riêng của mình, do đó kết nối sẽ được trả lại cho các hồ bơi kết nối với giao dịch được không cam kết. Điều gì xảy ra sau đó? JDBC giữ im lặng, vì thế đây là thực hiện cụ thể (MySQL cuộn lại giao dịch, Oracle AFAIR cam nó). Điều này cũng có thể được cấu hình trên mức Pool kết nối (ví dụ như C3P0 cung cấp cho bạn như một lựa chọn, rollback theo mặc định).
Một điều khi nói đến Hibernate, Spring đặt FlushMode sang MANUAL trong trường hợp giao dịch chỉ đọc, dẫn đến tối ưu hóa khác như không có nhu cầu cho kiểm tra bẩn.
Bạn có thể muốn ghi đè lên hoặc thiết lập một cách rõ ràng mức cô lập giao dịch. Tác động này đọc các giao dịch cũng kể từ khi bạn làm hoặc không muốn đọc những thay đổi không bị giam, được tiếp xúc với ma đọc, vv
Tóm lại - bạn có thể đi cả hai cách, nhưng bạn cần phải hiểu hậu quả.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: