Package org.exolab.castor.persist.spi
Interface PersistenceFactory
- All Known Implementing Classes:
BaseFactory
,DB2Factory
,DerbyFactory
,GenericFactory
,HsqlFactory
,InformixFactory
,InstantDBFactory
,InterbaseFactory
,MySQLFactory
,OracleFactory
,PointbaseFactory
,PostgreSQLFactory
,ProgressFactory
,SapDbFactory
,SQLServerFactory
,SybaseFactory
public interface PersistenceFactory
Factory for producing new persistence implementations. Used for
constructing a persistence service provider (see
Persistence
)
as well as for constructing new query expressions (see QueryExpression
).
The factory is specified in the JDO configuration file for the database and is configured through Bean-like accessor methods.
- Version:
- $Revision: 8377 $ $Date: 2004-03-25 05:34:48 -0700 (Thu, 25 Mar 2004) $
- Author:
- Assaf Arkin, Bruce Snyder
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionClass<?>
adjustSqlType
(Class<?> sqlType) Some databases has some problems with some SQL types.getCallQuery
(String call, Class<?>[] paramTypes, Class<?> javaClass, String[] fields, int[] sqlTypes) Needed to process OQL queries of "CALL" type (using stored procedure call).Returns the name of this factory.getIdentitySelectString
(String tableName, String columnName) Returns the database specific query string for retrieving last identity value.getKeyGenerator
(ClassDescriptor clsDesc) Returns a key generator as specified in the given class descriptor.getPersistence
(ClassDescriptor clsDesc) Returns a persistence implementation for the specified object type (given its descriptor) on behalf of the specified cache engine.Returns a new empty query expression suitable for the underlying SQL engine.getSequenceAfterSelectString
(String seqName, String tableName) Returns the database specific SELECT query string for fetching identity after the INSERT statement executed.getSequenceBeforeSelectString
(String seqName, String tableName, int increment) Returns the database specific SELECT query string for fetching identity before the next INSERT statement gets executed.getSequenceNextValString
(String seqName) Returns the database engine specific string to fetch sequence next value.boolean
Does persistence factory support generation of unique keys with identity key generator?boolean
isKeyGeneratorIdentityTypeSupported
(int type) Does identity key generator support generation of unique keys for the given SQL type?boolean
isKeyGeneratorSequenceSupported
(boolean returning, boolean trigger) Does persistence factory support generation of new key at the time of new object creation with sequence key generator?boolean
isKeyGeneratorSequenceTypeSupported
(int type) Does Sequence key generator support generation of key for the given SQL type?Returns the quoted identifier suitable for preventing conflicts between database identifiers and reserved keywords.
-
Method Details
-
getFactoryName
String getFactoryName()Returns the name of this factory. A descriptive name that indicates the type of supported database server or SQL syntax.- Returns:
- The name of this factory
-
getKeyGenerator
Returns a key generator as specified in the given class descriptor.- Parameters:
clsDesc
- The class descriptor.- Returns:
- A suitable key generator or
null
. - Throws:
MappingException
- If creation of key generator fails.
-
getPersistence
Returns a persistence implementation for the specified object type (given its descriptor) on behalf of the specified cache engine. Return null if no persistence support is available for the specified object type.- Parameters:
clsDesc
- The class descriptor.- Returns:
- A suitable persistence implementation or
null
. - Throws:
MappingException
- Indicates that the object type is not supported by the persistence engine due to improper mapping.
-
getQueryExpression
QueryExpression getQueryExpression()Returns a new empty query expression suitable for the underlying SQL engine. The implementation will construct SQL query statements in the preferred syntax.- Returns:
- New empty query expression
-
quoteName
Returns the quoted identifier suitable for preventing conflicts between database identifiers and reserved keywords.- Parameters:
name
- The identifier (table, column, etc)- Returns:
- The quoted identifier
-
adjustSqlType
Some databases has some problems with some SQL types. Usually it is enough to merely replace one SQL type by another.- Parameters:
sqlType
- The correspondent Java class for the SQL type in mapping.xml- Returns:
- The correspondent Java class for the SQL type that should be used instead.
-
getCallQuery
PersistenceQuery getCallQuery(String call, Class<?>[] paramTypes, Class<?> javaClass, String[] fields, int[] sqlTypes) Needed to process OQL queries of "CALL" type (using stored procedure call). This feature is specific for JDO.- Parameters:
call
- Stored procedure call (without "{call")paramTypes
- The types of the query parametersjavaClass
- The Java class of the query resultsfields
- The field namessqlTypes
- The field SQL types- Returns:
- null if this feature is not supported.
-
isKeyGeneratorIdentitySupported
boolean isKeyGeneratorIdentitySupported()Does persistence factory support generation of unique keys with identity key generator?- Returns:
true
if persistence factory is able to generate unique keys with identity key generator,false
otherwise.
-
isKeyGeneratorIdentityTypeSupported
boolean isKeyGeneratorIdentityTypeSupported(int type) Does identity key generator support generation of unique keys for the given SQL type?- Parameters:
type
- SQL type to check for support by identity key generator.- Returns:
true
if persistence factory is able to generate unique keys of given SQL type with identity key generator,false
otherwise.
-
getIdentitySelectString
Returns the database specific query string for retrieving last identity value.- Parameters:
tableName
- Name of the table from which identity needs to be fetched.columnName
- Name of the column from which identity needs to be fetched.- Returns:
- SQL Query string for fetching the identity value.
-
isKeyGeneratorSequenceSupported
boolean isKeyGeneratorSequenceSupported(boolean returning, boolean trigger) Does persistence factory support generation of new key at the time of new object creation with sequence key generator?- Parameters:
returning
- Return generated key value with insert statement?trigger
- Use a database trigger to generate key?- Returns:
true
if persistence factory is able to generate key with sequence key generator,false
otherwise.
-
isKeyGeneratorSequenceTypeSupported
boolean isKeyGeneratorSequenceTypeSupported(int type) Does Sequence key generator support generation of key for the given SQL type?- Parameters:
type
- SQL type to check for support by sequence key generator.- Returns:
true
if persistence factory is able to generate key of given SQL type with sequence key generator,false
otherwise.
-
getSequenceNextValString
Returns the database engine specific string to fetch sequence next value.- Parameters:
seqName
- Name of the sequence.- Returns:
- String to fetch sequence next value.
-
getSequenceBeforeSelectString
Returns the database specific SELECT query string for fetching identity before the next INSERT statement gets executed.- Parameters:
seqName
- Name of sequence.tableName
- Name of the table from which identity will be fetched.increment
- Increment value used in Interbase database engine.- Returns:
- SELECT sql string
-
getSequenceAfterSelectString
Returns the database specific SELECT query string for fetching identity after the INSERT statement executed.- Parameters:
seqName
- Name of sequence.tableName
- Name of the table from which identity will be fetched.- Returns:
- SELECT sql string
-