Nói một cách chính xác, ý bạn không phải là khóa lạc quan, mà là sự đồng thời lạc quan (không có khóa). Sử dụng dấu thời gian cho phiên bản chỉ để hỗ trợ cơ sở dữ liệu kế thừa, vì cơ sở dữ liệu hiện đại có thể (ít nhất là về mặt lý thuyết) hoạt động nhanh hơn độ chính xác của việc lưu trữ dấu thời gian.
Sử dụng thuộc tính phiên bản số nguyên rất đơn giản:
- Khi chèn:đặt phiên bản thành 1
- Khi cập nhật và xóa:tăng phiên bản bằng 1 và thêm vào "nơi [email protected] "cho mọi câu lệnh sql. Trả về số lượng bản ghi đã thay đổi. Hãy ném StaleObjectStateException khi số lượng bản ghi đã thay đổi khác với dự kiến.
Cá nhân tôi sẽ không tạo hai ứng dụng riêng biệt ghi cùng một dữ liệu trong một tình huống không kế thừa, vì điều đó có nghĩa là logic nghiệp vụ phải được trùng lặp và các thay đổi phải được áp dụng cho hai ứng dụng, cũng như khi thay đổi chỉ liên quan đến một trong số các ứng dụng.