|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.torque.oid.IDBroker
public class IDBroker
This method of ID generation is used to ensure that code is
more database independent. For example, MySQL has an auto-increment
feature while Oracle uses sequences. It caches several ids to
avoid needing a Connection for every request.
This class uses the table ID_TABLE defined in
conf/master/id-table-schema.xml. The columns in ID_TABLE are used as
follows:
ID_TABLE_ID - The PK for this row (any unique int).
TABLE_NAME - The name of the table you want ids for.
NEXT_ID - The next id returned by IDBroker when it queries the
database (not when it returns an id from memory).
QUANTITY - The number of ids that IDBroker will cache in memory.
Use this class like this:
int id = dbMap.getIDBroker().getNextIdAsInt(null, "TABLE_NAME"); - or - BigDecimal[] ids = ((IDBroker)dbMap.getIDBroker()) .getNextIds("TABLE_NAME", numOfIdsToReturn);NOTE: When the ID_TABLE must be updated we must ensure that IDBroker objects running in different JVMs do not overwrite each other. This is accomplished using using the transactional support occuring in some databases. Using this class with a database that does not support transactions should be limited to a single JVM.
Field Summary | |
---|---|
static java.lang.String |
COL_NEXT_ID
Next_ID column name |
static java.lang.String |
COL_QUANTITY
Quantity column name |
static java.lang.String |
COL_TABLE_ID
ID column name |
static java.lang.String |
COL_TABLE_NAME
Table_Name column name |
static java.lang.String |
ID_TABLE
Name of the ID_TABLE = ID_TABLE |
static java.lang.String |
NEXT_ID
Fully qualified Next_ID column name |
static java.lang.String |
QUANTITY
Fully qualified Quantity column name |
static java.lang.String |
TABLE_ID
Fully qualified ID column name |
static java.lang.String |
TABLE_NAME
Fully qualified Table_Name column name |
Constructor Summary | |
---|---|
IDBroker(Database database)
constructs an IdBroker for the given Database. |
|
IDBroker(TableMap tMap)
Deprecated. Use IDBroker(DatabaseInfo) instead. Will be removed in a future version of Torque. |
Method Summary | |
---|---|
boolean |
exists(java.lang.String tableName)
|
java.math.BigDecimal |
getIdAsBigDecimal(java.sql.Connection connection,
java.lang.Object tableName)
Returns an id as a BigDecimal. |
int |
getIdAsInt(java.sql.Connection connection,
java.lang.Object tableName)
Returns an id as a primitive int. |
long |
getIdAsLong(java.sql.Connection connection,
java.lang.Object tableName)
Returns an id as a primitive long. |
java.lang.String |
getIdAsString(java.sql.Connection connection,
java.lang.Object tableName)
Returns an id as a String. |
java.math.BigDecimal[] |
getNextIds(java.lang.String tableName,
int numOfIdsToReturn)
This method returns x number of ids for the given table. |
java.math.BigDecimal[] |
getNextIds(java.lang.String tableName,
int numOfIdsToReturn,
java.sql.Connection connection)
This method returns x number of ids for the given table. |
boolean |
isConnectionRequired()
A flag to determine whether a Connection is required to generate an id. |
boolean |
isPostInsert()
A flag to determine the timing of the id generation |
boolean |
isPriorToInsert()
A flag to determine the timing of the id generation * |
void |
run()
A background thread that tries to ensure that when someone asks for ids, that there are already some loaded and that the database is not accessed. |
void |
setConfiguration(org.apache.commons.configuration.Configuration configuration)
Set the configuration |
void |
stop()
Shuts down the IDBroker thread. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String ID_TABLE
public static final java.lang.String COL_TABLE_NAME
public static final java.lang.String TABLE_NAME
public static final java.lang.String COL_TABLE_ID
public static final java.lang.String TABLE_ID
public static final java.lang.String COL_NEXT_ID
public static final java.lang.String NEXT_ID
public static final java.lang.String COL_QUANTITY
public static final java.lang.String QUANTITY
Constructor Detail |
---|
public IDBroker(Database database)
database
- the database where this IdBroker is running in.public IDBroker(TableMap tMap)
tMap
- A TableMap.Method Detail |
---|
public void setConfiguration(org.apache.commons.configuration.Configuration configuration)
configuration
- the configurationpublic int getIdAsInt(java.sql.Connection connection, java.lang.Object tableName) throws java.lang.Exception
getIdAsInt
in interface IdGenerator
connection
- A Connection.tableName
- an Object that contains additional info.
java.lang.Exception
- Database error.public long getIdAsLong(java.sql.Connection connection, java.lang.Object tableName) throws java.lang.Exception
getIdAsLong
in interface IdGenerator
connection
- A Connection.tableName
- a String that identifies a table.
java.lang.Exception
- Database error.public java.math.BigDecimal getIdAsBigDecimal(java.sql.Connection connection, java.lang.Object tableName) throws java.lang.Exception
getIdAsBigDecimal
in interface IdGenerator
connection
- A Connection.tableName
- a String that identifies a table..
java.lang.Exception
- Database error.public java.lang.String getIdAsString(java.sql.Connection connection, java.lang.Object tableName) throws java.lang.Exception
getIdAsString
in interface IdGenerator
connection
- A Connection should be null.tableName
- a String that identifies a table.
java.lang.Exception
- Database error.public boolean isPriorToInsert()
isPriorToInsert
in interface IdGenerator
boolean
valuepublic boolean isPostInsert()
isPostInsert
in interface IdGenerator
boolean
valuepublic boolean isConnectionRequired()
isConnectionRequired
in interface IdGenerator
boolean
valuepublic java.math.BigDecimal[] getNextIds(java.lang.String tableName, int numOfIdsToReturn) throws java.lang.Exception
tableName
- The name of the table for which we want an id.numOfIdsToReturn
- The desired number of ids.
java.lang.Exception
- Database error.public java.math.BigDecimal[] getNextIds(java.lang.String tableName, int numOfIdsToReturn, java.sql.Connection connection) throws java.lang.Exception
tableName
- The name of the table for which we want an id.numOfIdsToReturn
- The desired number of ids.connection
- A Connection.
java.lang.Exception
- Database error.public boolean exists(java.lang.String tableName) throws java.lang.Exception
tableName
- a String
value that is used to identify
the row
boolean
value
TorqueException
- if a Torque error occurs.
java.lang.Exception
- if another error occurs.public void run()
run
in interface java.lang.Runnable
public void stop()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |