1. 程式人生 > >關於高併發 悲觀鎖 樂觀鎖

關於高併發 悲觀鎖 樂觀鎖

1、考慮高併發,若不加鎖,操作同一條資料會出現後一次更改覆蓋前一次提交的資料,資料丟失;

2、加鎖分為樂觀鎖、悲觀鎖:

      在hibernate情景下:

                                        悲觀鎖的使用-----query.setLockMode("sysseq", LockMode.UPGRADE); // 加鎖

                                                                      session.get(Resource.class, 564l,LockMode.UPGRADE);//加鎖-----前面提交的事務會失敗。

                                        樂觀鎖的使用----類上添加註解@OptimisticLocking(type=OptimisticLockType.VERSION)

                                                                     屬性(version)添加註解

                                                                                                             @Version
                                                                                                             @Column(name="version")
                                                                                                             private Integer version;

                                                                     原理每一次更新資料version會增1,根據version的值判斷是否過期----先提交的事務會成功,同一version下事務後提交失敗。