1 /* 2 * JBoss, Home of Professional Open Source 3 * Copyright 2005, JBoss Inc., and individual contributors as indicated 4 * by the @authors tag. See the copyright.txt in the distribution for a 5 * full listing of individual contributors. 6 * 7 * This is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of 10 * the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this software; if not, write to the Free 19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 21 */ 22 package org.jboss.ejb.plugins.lock; 23 24 25 /** 26 * This class is an optmistic lock implementation. 27 * It locks tableFields and their values during transaction. 28 * Locked tableFields and their values are added to the WHERE clause of the 29 * UPDATE SQL statement when entity is stored. 30 * The following strategies are supported: 31 * - fixed group of tableFields 32 * Fixed group of tableFields is used for locking . The tableFields and their values are 33 * locked at the beginning of a transaction. The group name must match 34 * one of the entity's load-group-name. 35 * - modified strategy 36 * The tableFields that were modified during transaction are used as lock. 37 * All entity's field values are locked at the beginning of the transaction. 38 * The tableFields are locked only after its actual change. 39 * - read strategy 40 * The tableFields that were read/modified during transaction. 41 * All entity's field values are locked at the beginning of the transaction. 42 * The tableFields are locked only after they were accessed. 43 * - version-column strategy 44 * This adds additional version field of type java.lang.Long. Each update 45 * of the entity will increase the version value by 1. 46 * - timestamp-column strategy 47 * Adds additional timestamp column of type java.util.Date. Each update 48 * of the entity will set the field to the current time. 49 * - key-generator column strategy 50 * Adds additional column. The type is defined by user. The key generator 51 * is used to set the next value. 52 * 53 * Note: all optimistic locking related code should be rewritten when in the 54 * new CMP design. 55 * 56 * Note2: done. 57 * 58 * @author <a HREF="mailto:aloubyansky@hotmail.com">Alex Loubyansky</a> 59 * @version $Revision: 37459 $ 60 */ 61 public final class JDBCOptimisticLock 62 extends NoLock 63 { 64 } 65