15
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private int salary;
@Version
private long version;
// ...getters and setters
}
- Bắt buộc phải tạo setter/getter cho
version
? - Khi kiên trì thực thể này với Hibernate, tôi không cần phải đặt giá trị này theo cách thủ công, phải không?
- Tôi cần phải định cấu hình gì khác để sử dụng kiểm tra đồng thời lạc quan với số
hibernateTemplate.saveOrUpdate
của Spring? Tất cả cơ sở dữ liệu có được hỗ trợ không? - Làm cách nào để kiểm tra đơn vị này? Trong cơ sở dữ liệu của tôi tất cả hồ sơ của tôi hiển thị trường phiên bản có giá trị 0
- Gọi điện thoại
hibernateTemplate.saveOrUpdate
có tăng giá trị phiên bản mỗi lần không?
@KLE chỉ trong trường hợp 2 người dùng gọi hibernatetemplate.saveorupdate cùng một lúc, không cần phải kiểm tra thêm khi gọi hibernatetemplate.saveorupdate? bất kỳ ngoại lệ ném? – cometta
@cometta Điểm không phải là để tiết kiệm hay không, nhưng nơi mà các dữ liệu đến từ. Trong một giao dịch, ** nếu bạn đọc một thực thể từ cơ sở dữ liệu **, thông tin phiên bản của nó được cập nhật. Khi bạn lưu nó, nó được tự động chăm sóc. Nếu bạn xảy ra một ngày nào đó để lấy dữ liệu từ một nguồn khác (ví dụ như bài đăng của một biểu mẫu), và tạo lại thực thể, thì bạn phải tự chăm sóc bản thân. – KLE
Một lời giải thích khá tốt là ở đây: http://en.wikibooks.org/wiki/Java_Persistence/Locking – Zilvinas