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: 7586 $ $Date: 2004-03-25 05:34:48 -0700 (Thu, 25 Mar 2004) $
Author:
Assaf Arkin, Bruce Snyder
See Also:
Persistence

Method Summary
 java.lang.Class adjustSqlType(java.lang.Class sqlType)
          Some databases has some problems with some SQL types.
 PersistenceQuery getCallQuery(java.lang.String call, java.lang.Class[] paramTypes, java.lang.Class javaClass, java.lang.String[] fields, int[] sqlTypes)
          Needed to process OQL queries of "CALL" type (using stored procedure call).
 java.lang.String getFactoryName()
          Returns the name of this factory.
 Persistence getPersistence(ClassDescriptor clsDesc)
          Returns a persistence implementation for the specified object type (given its descriptor) on behalf of the specified cache engine.
 QueryExpression getQueryExpression()
          Returns a new empty query expression suitable for the underlying SQL engine.
 java.lang.Boolean isDuplicateKeyException(java.lang.Exception except)
          Determines it the given exception is indication of a duplicate key.
 java.lang.String quoteName(java.lang.String name)
          Returns the quoted identifier suitable for preventing conflicts between database identifiers and reserved keywords.
 boolean supportsSetNullInWhere()
          Many databases don't support setNull for "WHERE fld=?" and require "WHERE fld IS NULL".
 

Method Detail

getFactoryName

java.lang.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

getPersistence

Persistence getPersistence(ClassDescriptor clsDesc)
                           throws MappingException
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 (may be null)
Returns:
A suiteable 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

isDuplicateKeyException

java.lang.Boolean isDuplicateKeyException(java.lang.Exception except)
Determines it the given exception is indication of a duplicate key.

Returns:
TRUE means "yes", FALSE means "no", null means "cannot determine"

quoteName

java.lang.String quoteName(java.lang.String name)
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

java.lang.Class adjustSqlType(java.lang.Class sqlType)
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.

supportsSetNullInWhere

boolean supportsSetNullInWhere()
Many databases don't support setNull for "WHERE fld=?" and require "WHERE fld IS NULL".


getCallQuery

PersistenceQuery getCallQuery(java.lang.String call,
                              java.lang.Class[] paramTypes,
                              java.lang.Class javaClass,
                              java.lang.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 parameters
javaClass - The Java class of the query results
fields - The field names
sqlTypes - The field SQL types
Returns:
null if this feature is not supported.


Copyright © 2011. All Rights Reserved.