org.jaffa.persistence
Class UOW

java.lang.Object
  extended byorg.jaffa.persistence.UOW

public class UOW
extends Object

The UOW (Unit of Work) is the application developers interface to the persistence layer. Through this all writes, updates and deletes are executed. The UOW also provides the querying mechanism against the persistent store.


Constructor Summary
UOW()
          Creates new UOW.
 
Method Summary
 void acquireLock(Object object)
          This will acquire a lock on the database row corrsponding to the input persistent object.
 void add(Object object)
          Adds an object to the UOW for addition to the persistent store.
 void commit()
          Objects that have been added, objects that have been deleted, and objects that have been updated, will all be persisted via an invocation of this method.
 void delete(Object object)
          Adds an object to the UOW for deletion from the persistent store.
protected  void finalize()
          This invokes the rollback() method, which will rollback & close the connection(if still open).
 Class getActualPersistentClass(Object persistentObject)
          This is a helper method to determine the actual class which was used to create an IPersistent instance.
 boolean isActive()
          Returns true if the UOW is active.
 IPersistent newPersistentInstance(Class persistentClass)
          Generates an appropriate instance for the input persistentClass.
 Collection query(Criteria criteria)
          Queries the underlying persistent store based on the search profile passed in the Criteria object.
 void rollback()
          Rollbacks all the additions, deletions, updations.
 void update(Object object)
          Adds an object to the UOW for updation to the persistent store.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UOW

public UOW()
    throws UOWException
Creates new UOW. A connection is established with the underlying persistence store.

Throws:
UOWException - if any error occurs during the process.
Method Detail

newPersistentInstance

public IPersistent newPersistentInstance(Class persistentClass)
Generates an appropriate instance for the input persistentClass. If the persistentClass is a 'Class', then it should implement the 'IPersistent' interface. The persistence engine will simply instantiate the class. If the persistentClass is an 'Interface', then the persistence engine will generate a dynamic proxy, to implement the IPersistent and the 'persistentClass' interfaces.

Parameters:
persistentClass - The actual persistentClass which can represent a 'Class' or an 'Interface'
Returns:
an instance implementing the IPersistent interface.

getActualPersistentClass

public Class getActualPersistentClass(Object persistentObject)
This is a helper method to determine the actual class which was used to create an IPersistent instance. It is quite possible that the input object is a dynamic proxy.

Returns:
The class which was used for instantiating the instance.

add

public void add(Object object)
         throws AddFailedException
Adds an object to the UOW for addition to the persistent store. The persistence engine may choose to add the object(s) only on a commit.

Parameters:
object - The object to persist. It should implement the IPersistent interface.
Throws:
AddFailedException - if any error occurs during the process.

update

public void update(Object object)
            throws UpdateFailedException
Adds an object to the UOW for updation to the persistent store. The persistence engine may choose to update the object(s) only on a commit.

Parameters:
object - The object to update. It should implement the IPersistent interface.
Throws:
UpdateFailedException - if any error occurs during the process.

delete

public void delete(Object object)
            throws DeleteFailedException
Adds an object to the UOW for deletion from the persistent store. The persistence engine may choose to delete the object(s) only on a commit.

Parameters:
object - The object to delete from persistent storage. It should implement the IPersistent interface.
Throws:
DeleteFailedException - if any error occurs during the process.

query

public Collection query(Criteria criteria)
                 throws QueryFailedException,
                        PostLoadFailedException
Queries the underlying persistent store based on the search profile passed in the Criteria object.

Parameters:
criteria - search profile for the query.
Returns:
a Collection of persistent objects.
Throws:
QueryFailedException - if any error occurs during the process.
PostLoadFailedException - if any error occurs during the invocation of the PostLoad trigger on the persistent object.

commit

public void commit()
            throws AddFailedException,
                   UpdateFailedException,
                   DeleteFailedException,
                   CommitFailedException
Objects that have been added, objects that have been deleted, and objects that have been updated, will all be persisted via an invocation of this method. Note: After a successful commit, this object will free up its connection to the database, and will no longer be available.

Throws:
AddFailedException - if any error occurs during the addition of objects to the persistent store.
UpdateFailedException - if any error occurs while updating the objects of the persistent store.
DeleteFailedException - if any error occurs while deleting the objects of the persistent store.
CommitFailedException - if any error occurs during the commit.

rollback

public void rollback()
              throws RollbackFailedException
Rollbacks all the additions, deletions, updations. Note: This object will free up its connection to the database, and will no longer be available.

Throws:
RollbackFailedException - if any error occurs during the process.

acquireLock

public void acquireLock(Object object)
                 throws AlreadyLockedObjectException
This will acquire a lock on the database row corrsponding to the input persistent object.

Parameters:
object - The persistent object to be locked. It should implement the IPersistent interface.
Throws:
AlreadyLockedObjectException - if the database row has been locked by another process.

isActive

public boolean isActive()
Returns true if the UOW is active. The UOW becomes inactive after a commit or a rollback.

Returns:
true if the UOW is active.

finalize

protected void finalize()
                 throws Throwable
This invokes the rollback() method, which will rollback & close the connection(if still open).

Throws:
Throwable - if any error occurs.


Copyright © 2002-2004 JAFFA Project.