SQLEngine
public interface Persistence
The caller takes full responsibility to assure integrity of transactions and object caching and only relies on the engine to assist in assuring that through the mechanisms available to it.
All method calls provide an open connection into the persistence storage. The connection is opened by and maintained in the context of a transaction. The type of the connection depends on the persistence engine (JDBC, JNDI, etc).
All method calls provide the object fields and the object identity. The engine must always use the identity passed in the method call and never the identity contained in the object itself.
The stamp is an arbitrary object that is returned on object creation and loading and passed when performing a dirty check. The stamp can be used to detect object dirtyness in a more efficient manner in database that support a stamping mechanism (e.g. Oracle RAWID, Sybase TIMESTAMP).
An implementation of this object must be re-entrant and thread safe. It must depend on the connection passed in each method call and never hold a reference to a connection.
TransactionContext
,
PersistenceQuery
Modifier and Type | Method | Description |
---|---|---|
Identity |
create(Database database,
java.lang.Object conn,
ProposedEntity entity,
Identity identity) |
Creates a new object in persistence storage.
|
PersistenceQuery |
createQuery(QueryExpression query,
java.lang.Class<?>[] types,
AccessMode accessMode) |
Creates and returns a new query object.
|
SQLRelationLoader |
createSQLRelationLoader(java.lang.String manyTable,
java.lang.String[] idSQL,
int[] idType,
TypeConvertor[] idTo,
TypeConvertor[] idFrom,
java.lang.String[] relatedIdSQL,
int[] relatedIdType,
TypeConvertor[] ridTo,
TypeConvertor[] ridFrom) |
|
void |
delete(java.lang.Object conn,
Identity identity) |
Deletes the object from persistent storage, given the object'
identity.
|
void |
load(java.lang.Object conn,
ProposedEntity proposedObject,
Identity identity,
AccessMode accessMode) |
Loads the object from persistence storage.
|
void |
store(java.lang.Object conn,
Identity identity,
ProposedEntity newentity,
ProposedEntity oldentity) |
Stores the object in persistent storage, given the object fields
and its identity.
|
Identity create(Database database, java.lang.Object conn, ProposedEntity entity, Identity identity) throws PersistenceException
conn
- An open connectionentity
- The fields to storeidentity
- The object's identityPersistenceException
- An object with the same identity already
exists in persistent storage or any other persistence error
occured.void load(java.lang.Object conn, ProposedEntity proposedObject, Identity identity, AccessMode accessMode) throws PersistenceException
store(java.lang.Object, org.exolab.castor.persist.spi.Identity, org.castor.persist.ProposedEntity, org.castor.persist.ProposedEntity)
). If lock is true the object must be
locked in persistence storage to prevent concurrent updates.conn
- An open connectionproposedObject
- The fields to load intoidentity
- object's identityaccessMode
- The access mode (null equals shared)PersistenceException
- The object was not found in persistent
storage or any other persistence error occured.void store(java.lang.Object conn, Identity identity, ProposedEntity newentity, ProposedEntity oldentity) throws PersistenceException
create(org.exolab.castor.jdo.Database, java.lang.Object, org.castor.persist.ProposedEntity, org.exolab.castor.persist.spi.Identity)
. This method should
detect whether the object has been modified in persistent storage
since it was loaded. After this method returns all locks on the
object must be retained until the transaction has completed.
This method may return a new stamp to track further updates to
the object.
If the object was not retrieved for exclusive access, this
method will be asked to perform dirty checking prior to storing
the object. The original argument will contains the
object's original fields as retrieved in the transaction, and
stamp the object's stamp returned from a successful
call to load(java.lang.Object, org.castor.persist.ProposedEntity, org.exolab.castor.persist.spi.Identity, org.exolab.castor.mapping.AccessMode)
. These arguments are null for objects
retrieved with an exclusive lock.
conn
- An open connectionnewentity
- The fields to storeidentity
- The object's identityoldentity
- The original fields, or nullPersistenceException
- The object has been modified in
persistence storage since it was last loaded or has been
deleted from persitence storage or any other persistence
error occored.void delete(java.lang.Object conn, Identity identity) throws PersistenceException
create(org.exolab.castor.jdo.Database, java.lang.Object, org.castor.persist.ProposedEntity, org.exolab.castor.persist.spi.Identity)
. After this method returns all
locks on the object must be retained until the transaction has
completed.conn
- An open connectionidentity
- The object's identityPersistenceException
- A persistence error occuredPersistenceQuery createQuery(QueryExpression query, java.lang.Class<?>[] types, AccessMode accessMode) throws QueryException
query
- The query expressiontypes
- List of all parameter types, or nullQueryException
- The query is invalidSQLRelationLoader createSQLRelationLoader(java.lang.String manyTable, java.lang.String[] idSQL, int[] idType, TypeConvertor[] idTo, TypeConvertor[] idFrom, java.lang.String[] relatedIdSQL, int[] relatedIdType, TypeConvertor[] ridTo, TypeConvertor[] ridFrom)
Intalio Inc. (C) 1999-2008. All rights reserved http://www.intalio.com