Implementation of the JDO engine used for obtaining database connection. A
JDO object is constructed with the name of a database and other properties,
and
getDatabase()
is used to obtain a new database connection. Any
number of database connections can be obtained from the same JDO object.
The database configuration can be loaded using one of the
loadConfiguration(String)
methods. Alternatively,
setConfiguration(String)
can be used to specify the URL of a database
configuration file. The configuration will be loaded only once.
For example:
// load the database configuration
JDO.loadConfiguration( "database.xml" );
...
JDO jdo;
Database db;
// construct a new JDO for the database 'mydb'
jdo = new JDO( "mydb" );
// open a connection to the database
db = jdo.getDatabase();
Or,
JDO jdo;
Database db;
// construct a new JDO for the database 'mydb'
jdo = new JDO( "mydb" );
// specify the database configuration
jdo.setConfiguration( "database.xml" );
// open a connection to the database
db = jdo.getDatabase();
getClassLoader
public ClassLoader getClassLoader()
Returns the application classloader.
- The currently used ClassLoader or null if default is used.
getConfiguration
public String getConfiguration()
Return the URL of the database configuration file.
The standard name for this property is
configuration.
- The URL of the database configuration file
getDatabaseName
public String getDatabaseName()
Returns the name of this database.
The standard name for this property is
databaseName.
- getDatabaseName in interface DataObjects
- The name of this database
getDatabasePooling
public boolean getDatabasePooling()
Indicates if jdo database pooling is enable or not.
Experimental maybe removed in the further release
true
if database pooling is enable.
getDescription
public String getDescription()
Returns the description of this database.
The standard name for this property is
description.
- getDescription in interface DataObjects
- The description of this database
getEntityResolver
public EntityResolver getEntityResolver()
Returns the entity resolver.
- The EntityResolver currently in use.
getLockTimeout
public int getLockTimeout()
Returns the lock timeout for this database.
The standard name for this property is
lockTimeout.
- The lock timeout, specified in seconds
getLogInterceptor
public LogInterceptor getLogInterceptor()
There is no need for this method due to the implementation
of Log4J which is controlled via the log4j.properties file.
Returns the log interceptor for this database source.
- The log interceptor, null if disabled
getObjectInstance
public Object getObjectInstance(Object refObj,
Name name,
Context nameCtx,
Hashtable env)
throws NamingException
Creates an instance of JDO from a JNDI reference.
javax.naming.spi.ObjectFactory
getReference
public Reference getReference()
throws NamingException
Creates a JNDI reference from the current JDO instance, to be bound to
a JNDI tree.
javax.naming.Referenceable.getReference()
isAutoStore
public boolean isAutoStore()
Return if the next database instance will be set to autoStore.
- True if autoStore is enabled.
loadConfiguration
public static void loadConfiguration(InputSource source,
EntityResolver resolver,
ClassLoader loader)
throws MappingException
Load database configuration from the specified input source.
source must point to a JDO configuration file describing
the database* name, connection factory and mappings.
resolver can be used to resolve cached entities, e.g.
for external mapping documents. loader is optional, if
null the default class loader is used.
source
- The JDO configuration fileresolver
- An optional entity resolverloader
- The class loader to use, null for the default
MappingException
- The mapping file is invalid, or any
error occured trying to load the JDO configuration/mapping
loadConfiguration
public static void loadConfiguration(String url)
throws MappingException
Load database configuration from the specified URL. url
must point to a JDO configuration file describing the database
name, connection factory and mappings.
url
- The JDO configuration file
MappingException
- The mapping file is invalid, or any
error occured trying to load the JDO configuration/mapping
loadConfiguration
public static void loadConfiguration(String url,
ClassLoader loader)
throws MappingException
Load database configuration from the specified URL. url
must point to a JDO configuration file describing the database
name, connection factory and mappings. loader is
optional, if null the default class loader is used.
url
- The JDO configuration fileloader
- The class loader to use, null for the default
MappingException
- The mapping file is invalid, or any
error occured trying to load the JDO configuration/mapping
setAutoStore
public void setAutoStore(boolean autoStore)
Sets autoStore mode.
autoStore
- True if user prefer all reachable object to be stored
automatically; False if user want only dependent object to be
stored.
setCallbackInterceptor
public void setCallbackInterceptor(CallbackInterceptor callback)
Overrides the default callback interceptor by a custom
interceptor for this database source.
The interceptor is a callback that notifies data objects
on persistent state events.
If callback interceptor is not overrided, events will be
sent to data object that implements the org.exolab.castor.jdo.Persistent
interface.
callback
- The callback interceptor, null if disabled
setClassLoader
public void setClassLoader(ClassLoader classLoader)
Sets the application class loader. This method should be used with
application servers that use multiple class loaders. The default value
is "null". It means that application classes are loaded through
Class.forName(className)
.
Examples:
jdo.setClassLoader(getClass().getClassLoader());
jdo.setClassLoader(Thread.currentThread().getContextClassLoader());
classLoader
- New ClassLoader to be used or null to use the default.
setConfiguration
public void setConfiguration(String url)
Sets the URL of the database configuration file. If the URL is
specified, the first attempt to load a database of this type
will use the specified configuration file. If the URL is not
specified, use one of the
loadConfiguration(String)
methods
instead.
The standard name for this property is
configuration.
url
- The URL of the database configuration file
setConfiguration
public void setConfiguration(JdoConf jdoConfiguration)
Provides JDO with a JDO configuration file.
jdoConfiguration
- A JDO configuration instance.
setDatabaseName
public void setDatabaseName(String name)
Sets the name of this database. This attribute is required
in order to identify which database to open.
The standard name for this property is
databaseName.
name
- The name of this database
setDatabasePooling
public void setDatabasePooling(boolean pool)
Enable/disable jdo Database pooling. This option only affects
JDO if _transactionManager is set and a transaction is associated
with the thread that call
getDatabase()
. If jdo Database pooling
is enabled, JDO will first search in the pool to see if there
is already a Database for the current transaction. If found, it
returns the database; if not, it create a new one, associates
it will the transaction and return the newly created Database.
Method should be called before the invocation of
getDatabase()
.
Experimental maybe removed in the future releases
pool
- true to enable database pooling
setDescription
public void setDescription(String description)
Sets the description of this database.
The standard name for this property is
description.
- setDescription in interface DataObjects
description
- The description of this database
setEntityResolver
public void setEntityResolver(EntityResolver entityResolver)
Sets the entity resolver. The resolver can be used to resolve cached
entities, e.g. for external mapping documents. Note, that you cannot
create two Database instances that differ only in a resolver.
entityResolver
- New EntityResolver to be used.
setInstanceFactory
public void setInstanceFactory(InstanceFactory factory)
Overrides the default instance factory by a custom one
to be used by Castor to obtaining an instance of data
object when it is needed during loading.
If instance factory is not overrided, and if class loader
is not set, Class.forName( className ).newInstance() will
be used; if instance factory is not override, and class
loader is set, loader.loadClass( className ).newInstance()
will be used to create a new instance.
factory
- The instance factory, null to use the default
setLockTimeout
public void setLockTimeout(int seconds)
Sets the lock timeout for this database. Use zero for immediate
timeout, an infinite value for no timeout. The timeout is
specified in seconds.
The standard name for this property is
lockTimeout.
seconds
- The lock timeout, specified in seconds
setLogInterceptor
public void setLogInterceptor(LogInterceptor logInterceptor)
There is no need for this method due to the implementation
of Log4J which is controlled via the log4j.properties file.
Sets the log interceptor for this database source.
The interceptor is a callback to to which all
logging and tracing messages are sent.
logInterceptor
- The log interceptor, null if disabled
setLogWriter
public void setLogWriter(PrintWriter logWriter)
There is no need for this method due to the implementation
of Log4J which is controlled via the log4j.properties file.
Returns the log writer for this database source.
The log writer is a character output stream to which all
logging and tracing messages will be printed.
logWriter
- A PrintWriter instance.