001: package org.apache.ojb.broker.locking;
002:
003: /* Copyright 2002-2005 The Apache Software Foundation
004: *
005: * Licensed under the Apache License, Version 2.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /**
019: * This interface defines the lock isolation level constants used by
020: * OJB locking api. It contains numeric constants and literal constants
021: * representing all known isolation levels.
022: * <p/>
023: * NOTE: The lock isolation levels are labeled like the database transaction level but
024: * the definition of the levels is different - take care of that.
025: *
026: * @version $Id: IsolationLevels.java,v 1.1.2.3 2005/12/21 22:25:32 tomdz Exp $
027: */
028: public interface IsolationLevels {
029: /**
030: * Numeric constant representing an no-op isolation level.
031: * <p/>
032: * The lock manager completely ignores locking.
033: * <p/>
034: * Allows:<br/>
035: * all possible concurrent side-effects<br/>
036: */
037: public final static int IL_NONE = -1;
038:
039: /**
040: * Numeric constant representing the uncommited read isolation level.
041: * <p/>
042: * Obtaining two concurrent write locks on a given object is not
043: * allowed. Obtaining read locks is allowed even if
044: * another transaction is writing to that object
045: * (Thats why this level is also called "dirty reads").
046: * <p/>
047: * Allows:<br/>
048: * Dirty Reads<br/>
049: * Non-Repeatable Reads<br/>
050: * Phantom Reads<br/>
051: */
052: public final static int IL_READ_UNCOMMITTED = 2;
053:
054: /**
055: * Numeric constant representing the commited read isolation level.
056: * <p/>
057: * Obtaining two concurrent write locks on a given object is not allowed.
058: * Obtaining read locks is allowed only if there is no write lock on
059: * the given object.
060: * <p/>
061: * Allows:<br/>
062: * Non-Repeatable Reads<br/>
063: * Phantom Reads<br/>
064: */
065: public final static int IL_READ_COMMITTED = 3;
066:
067: /**
068: * Numeric constant representing the repeatable read isolation level.
069: * <p/>
070: * As commited reads, but obtaining a write lock on an object that has
071: * been locked for reading by another transaction is not allowed.
072: * <p/>
073: * Allows:<br/>
074: * Phantom Reads<br/>
075: */
076: public final static int IL_REPEATABLE_READ = 5;
077:
078: /**
079: * Numeric constant representing the serializable transactions isolation level.
080: * <p/>
081: * As Repeatable Reads, but it is even not allowed to have multiple
082: * read locks on a given object.
083: * <p/>
084: * Allows:<br/>
085: * -<br/>
086: */
087: public final static int IL_SERIALIZABLE = 7;
088:
089: /**
090: * Numeric constant representing the optimistic locking isolation level.
091: * <p/>
092: * The lock manager does not perform any pessimistic locking action. Normally
093: * it's not needed to declare this isolation level in persistent object metadata,
094: * because OJB will automatically detect an enabled optimistic locking.
095: * <br/>
096: * NOTE: Usage of this isolation level needs an specific optimistic locking
097: * declaration for the specified object. This declaration is <strong>not</strong>
098: * automatically handled by OJB and need setting of configuration properties - see OJB docs.
099: */
100: public final static int IL_OPTIMISTIC = 4;
101:
102: /**
103: * Numeric constant representing the default isolation level used by
104: * OJB - current used default level is {@link #IL_READ_UNCOMMITTED}.
105: */
106: public final static int IL_DEFAULT = IL_READ_UNCOMMITTED;
107:
108: /**
109: * Literal constant representing the uncommited read isolation level.
110: */
111: public final static String LITERAL_IL_NONE = "none";
112:
113: /**
114: * Literal constant representing the uncommited read isolation level.
115: */
116: public final static String LITERAL_IL_READ_UNCOMMITTED = "read-uncommitted";
117:
118: /**
119: * Literal constant representing the commited read isolation level.
120: */
121: public final static String LITERAL_IL_READ_COMMITTED = "read-committed";
122:
123: /**
124: * Literal constant representing the repeatable read isolation level.
125: */
126: public final static String LITERAL_IL_REPEATABLE_READ = "repeatable-read";
127:
128: /**
129: * Literal constant representing the serializable transactions isolation level.
130: */
131: public final static String LITERAL_IL_SERIALIZABLE = "serializable";
132:
133: /**
134: * Literal constant representing the optimistic locking isolation level.
135: */
136: public final static String LITERAL_IL_OPTIMISTIC = "optimistic";
137: }
|