2011-10-03 25 views
7

Bir müşteri bakım uygulaması geliştirdim. Kullanıcılar müşteri detaylarını web arayüzü üzerinden değiştirebilir.Hazırda Bekletme Otomatik Sürüm Oluşturma

  1. User 1 yükleri customer1 ayrıntıları: Aşağıdaki senaryo işlemek istiyorum.
  2. User 2 yükler customer1 Ayrıntılar.
  3. User 1, customer1 öğesinin name numarasını değiştirir ve kaydeder.
  4. User 2 yalnızca customer1 yaşını değiştirir ve kaydeder. s güncelleştirme 'User 2User 1 üzerine yazar çünkü ler eski adını ve yeni yaşını' Yukarıdaki senaryoda

, nihayet veritabanı customer1 tutar. Hibernate kullanıyorum. Hibernate Automatic Versioning'in bunu desteklediğini duymuştum. Herhangi biri nasıl kullanılacağını biliyorsa, lütfen beni bilgilendirin.

cevap

12

sadece @Version ile açıklamalı bir alan eklemek gerekir: daha fazla bilgi için

public class Customer { 

@Id 
private Long id; 

@Version 
private Long version; 

// rest of the fields, etc. 

} 

Oku this makale.

+0

JavaJetimdeki herhangi bir ORM üzerinden SpringJDBC kullanıyorum. Ancak, orada açıklanan bazı durumları önlemek için bazı Hibernate's @Version işlevlerini eklemem gerekiyor. Yani belki bana JDBC gerçekleştirilmesini önerebilirsin? – MeetJoeBlack

+0

Bu yaklaşımın genel terimi _optimistic locking_ olarak adlandırılır. Burada bazı rehberlik bulabilirsiniz: http://stackoverflow.com/a/8880896/309683 – Behrang

0

bir çözüm, ikinci isteği karşılaştırmak modifikasyon zaman damgası kullanabilirsiniz, o ayrıntılar sonra güncellenir yüklenir eğer öyleyse o zaman istisna yükseltmek ve kullanıcı tekrar yükleme ayrıntılarını ve ardından değiştirmeye izin verirse ayrıntıları öncelikle kontrol güncellemek eğilimindedir zaman

İlgili konular