2012-01-01 28 views
6

Tôi biết khóa lạc quan và bi quan là gì, nhưng khi bạn viết mã java, bạn làm cách nào? Giả sử tôi đang sử dụng Oracle với Java, tôi có phương pháp nào trong JDBC để giúp tôi làm điều đó không? Làm thế nào tôi sẽ cấu hình điều này? Mọi con trỏ sẽ được đánh giá cao.Làm thế nào để mã khóa lạc quan và bi quan từ mã java

+0

Khóa Java và JDBC không liên quan theo cách bạn đang tìm kiếm. Vấn đề bạn đang cố gắng giải quyết là gì? Các khóa Java là các khóa lại có thể lấy được bằng cách sử dụng từ khóa 'đồng bộ'. Vì vậy, chính xác những gì bạn đang tìm kiếm? – Pavan

+0

tôi đang tìm kiếm khóa cơ sở dữ liệu – user2434

Trả lời

3

Giả sử tôi đang sử dụng Oracle với Java, tôi có phương pháp nào trong JDBC sẽ giúp tôi làm điều đó không?

This Oracle paper sẽ cung cấp cho bạn một số mẹo về cách thực hiện việc này.

Không có phương pháp JDBC cụ thể. Thay vào đó, bạn đạt được khóa lạc quan bằng cách bạn thiết kế các truy vấn/cập nhật SQL của bạn và nơi bạn đặt các ranh giới giao dịch.

11

Bạn có thể thực hiện khóa lạc quan trong bảng DB của bạn theo cách này (đây là cách lạc quan khóa được thực hiện trong Hibernate):

  1. Thêm số nguyên "phiên bản" cột vào bảng của bạn.
  2. Tăng giá trị của cột này với mỗi lần cập nhật của hàng tương ứng.
  3. Để lấy khóa, chỉ cần đọc giá trị "phiên bản" của hàng.
  4. Thêm điều kiện "version = obtained_version" vào mệnh đề của tuyên bố cập nhật của bạn. Xác minh số hàng bị ảnh hưởng sau khi cập nhật. Nếu không có hàng nào bị ảnh hưởng - ai đó đã sửa đổi mục nhập của bạn.

cập nhật của bạn sẽ trông như thế

UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2 

Tất nhiên, cơ chế này chỉ hoạt động nếu tất cả các bên theo nó, trái với ổ khóa DBMS-với điều kiện là không cần xử lý đặc biệt.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan