如果是 EJB 2.x CMP Entity Bean,您可以在關聯式資料庫中新增碰撞偵測的直欄。這個碰撞偵測直欄是額外保留的資料庫直欄,可以判斷記錄是否已被更新。如果要管理碰撞偵測直欄,您必須提供自己的資料庫觸發實作。
下面是選擇新增磁撞偵測的直欄,優於另一種樂觀並行控制架構
針對樂觀存取目的而在述語中加入屬性的好處:
- 在過度限定的 UPDATE 陳述式中,只有碰撞偵測直欄和主鍵是必要項目。如果勾選這兩欄,會減少使用多個所選樂觀述語時,所用的 I/O 作業數目。
- 使用碰撞偵測直欄可以克服樂觀述語無法對映到可接受空值的直欄,或是不受支援的樂觀並行控制資料類型(例如,BLOB 和 CLOB)等限制。
下面是使用碰撞偵測直欄的限制:
- 任何對碰撞偵測直欄值所做的修改或更新,都不受支援。
- 如果您選擇使用碰撞偵測直欄,則相較於針對樂觀存取目的而在述語中加入屬性的另一種樂觀並行控制架構,它會優先採用碰撞偵測直欄。此外,樂觀存取目的會略過所有的樂觀述語設定。
- 由上而下與結合發展對映,可以為碰撞偵測新增一直欄。由下而上的對映1。不受支援。
- 以 "DISCRIM" 或 "OCC_" 開頭的直欄名稱,是保留給 EJB 對映工具使用的名稱。
- CMP 欄位名稱不可指定成以下列字串開頭的名稱:"DISCRIM" 或 "OCC_"。
- 不要將 CMP 關聯到另一個名稱以下列字串開頭的 CMP:"DISCRIM" 和 "OCC_"。
請選取下列一種方法,新增碰撞偵測的直欄: