Tôi đang cố gắng hiểu tác dụng của việc gọi EntityManager.lock (thực thể, LockModeType.READ). Tài liệu API có vẻ rất khó hiểu đối với tôi.JPA: Khóa đọc hoạt động như thế nào?
Nếu tôi có chủ đề đồng thời và chuỗi cuộc gọi Chủ đề 1 (thực thể, LockModeType.READ), thì Thread 2 vẫn đọc và viết đối tượng?
Điều tôi đã học được cho đến thời điểm này:
Loại khóa ĐỌC trong JPA1 giống với OPTIMISTIC trong JPA2. Nếu khóa như vậy được thiết lập, EntityManager kiểm tra thuộc tính phiên bản trước khi thực hiện giao dịch, nhưng không cập nhật nó. Tôi đã tìm thấy giải thích cho chế độ khóa OPTIMISTIC: Link. Tìm kiếm Ví dụ LockMode OPTIMISTIC (READ). Như fas như tôi hiểu điều này, thiết lập một khóa đọc trong Thread 1 không có hiệu lực trên Chủ đề 2 ... n. Tất cả các chủ đề khác vẫn có thể đọc và viết thực thể. Nhưng khi giao dịch trong Thread 1 commit và một Thread khác đã cập nhật thực thể, giao dịch trong Thread 1 được khôi phục.
Tôi có hiểu điều này đúng không?
Tôi vẫn không hiểu. Ai đó có thể tái cơ cấu các câu hay thêm một ví dụ? – stoefln
Tôi đã cập nhật câu trả lời của mình, vui lòng kiểm tra liên kết tôi đã cung cấp – engma