Mình có 1 vấn đề về java web như sau:
Mình có 1 màn hình [search], sau khi search ra kết quả thì kết quả sẽ hiển thị trên jqGrid, nếu mình chọn 1 hoặc 1 vài bản ghi (bằng cách check vào check box trên grid) rồi ấn nút [Đăng ký] thì dữ liệu của những bản ghi này sẽ chuyển qua màn hình [đăng ký hàng loạt]
Vấn đề xảy ra với mình là:
Khi mình chọn các bản ghi ở grid rồi để im ở màn hình [search] đấy 1h. Trong 1 tiếng đấy thì đã có người thay đổi nội dung của cái bản ghi mình đã chọn => làm nó không đủ điều kiện hiển thị nữa (nên sẽ ko thể truyền dữ liệu này qua màn đăng ký) => Nên khi ấn nút [Đăng ký] thay vì chuyển qua màn [đăng ký hàng loạt] nó sẽ hiện ra thông báo là dữ liệu đã bị thay đổi rồi sau đó load lại trang [search] này
Vậy anh em cho hỏi:
Có cách nào để check xem dữ liệu mà mình chọn đã bị thay đổi trong database hay chưa không
Mình có 2 giải pháp thế này:
-
Mình sẽ có 1 vòng for để duyệt hết list các bản ghi mình đã chọn trên grid, sau đó mình thực hiện select lại theo key và so sánh xem bản ghi đã bị thay đổi hay chưa. Nếu bản ghi bị thay đổi mình sẽ break và in ra thông báo => Cách này thì chỉ cần chạy vòng for 1 lần nhưng lần nào cũng phải truy vẫn vào database (nếu số record mình chọn trên grid khoảng 1-2000 thì phải truy vấn đến 1-2000 lần vào DB)
-
Mình sẽ select lại duy nhất 1 lần tất cả các bản ghi mình đã chọn trên grid dựa theo key của các bản ghi ấy. Rồi lưu cái đống mình select ra vào 1 List sau đó mình chạy 2 vòng for lồng nhau để kiểm tra xem bản ghi nào đã bị thay đổi => Cách này thì nếu có 1000 bản ghi thì mình phải chạy 1000*1000 vòng
Mình hiện tại chỉ nghĩ ra 2 cách như vậy nhưng mà mình nghĩ 2 cách này đều rất là tốn time.
Không biết các bạn có gợi ý gì giúp mình trong trường họp này không
Thanks & best regards !