|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface PersistableBusinessObject
Declares a common interface for all BusinessObject
classes which can have their
state persisted. A business object which is persistable defines some additional methods
which allow for various operations to be executed that relate to the persistent nature of
the business object. A persistable business object also has some additional data
attributes which include the version number, the object id, and the extension.
The version number indicates the version of the business object when it was retrieved from persistent storage. This allows for services to check this version number during persistence operations to prevent silent overwrites of business object state. These kinds of scenarios might arise as a result of concurrent modification to the business object in the persistent store (i.e. two web application users updating the same record in a database). The kind of check which would be performed using the version number is commonly referred to as "optimistic locking".
The object id represents a globally unique identifier for the business object. In practice,
this can be used by other portions of the system to link to persistable business objects which
might be stored in different locations or even different persistent data stores. In general, it
is not the responsibility of the client who implements a persistable business object to handle
generating this value. The framework will handle this automatically at the point in time when
the business object is persisted. If the client does need to do this themselves, however, care
should be taken that an appropriate globally unique value generator algorithm is used
(such as the one provided by UUID
).
The extension object is primarily provided for the purposes of allowing implementer
customization of the business object without requiring the original business object to be
modified. The additional PersistableBusinessObjectExtension
which is linked with the
parent business object can contain additional data attributes and methods. The framework will
automatically request that this extension object be persisted when the parent business object
is persisted. This is generally the most useful in cases where an application is defining
business objects that will be used in redistributable software packages (such as the
actual Kuali Foundation projects themselves). If using the framework for the purposes
of implementing an internal application, the use of a business object extensions
is likely unnecessary.
Method Summary | |
---|---|
List<Collection<PersistableBusinessObject>> |
buildListOfDeletionAwareLists()
If this method is not implemented appropriately for PersistableBusinessObject with collections, then PersistableBusinessObject with collections will not persist deletions correctly. |
PersistableBusinessObjectExtension |
getExtension()
|
boolean |
isNewCollectionRecord()
Returns the boolean indicating whether this record is a new record of a maintenance document collection. |
void |
linkEditableUserFields()
Hook to link in any editable user fields. |
void |
refreshNonUpdateableReferences()
|
void |
refreshReferenceObject(String referenceObjectName)
This method is used to refresh a reference object that hangs off of a document. |
void |
setExtension(PersistableBusinessObjectExtension extension)
|
void |
setNewCollectionRecord(boolean isNewCollectionRecord)
Sets the boolean indicating this record is a new record of a maintenance document collection. |
void |
setObjectId(String objectId)
Sets the unique identifier for the object |
void |
setVersionNumber(Long versionNumber)
Sets the business object's version number. |
Methods inherited from interface org.kuali.rice.kns.bo.BusinessObject |
---|
refresh |
Methods inherited from interface org.kuali.rice.core.api.mo.ModelObjectBasic |
---|
toString |
Methods inherited from interface org.kuali.rice.core.api.mo.common.Versioned |
---|
getVersionNumber |
Methods inherited from interface org.kuali.rice.core.api.mo.common.GloballyUnique |
---|
getObjectId |
Method Detail |
---|
void setVersionNumber(Long versionNumber)
versionNumber
- the version number to set on this business objectvoid setObjectId(String objectId)
objectId
- PersistableBusinessObjectExtension getExtension()
void setExtension(PersistableBusinessObjectExtension extension)
void refreshNonUpdateableReferences()
BusinessObject.refresh()
void refreshReferenceObject(String referenceObjectName)
referenceObjectName
- List<Collection<PersistableBusinessObject>> buildListOfDeletionAwareLists()
boolean isNewCollectionRecord()
void setNewCollectionRecord(boolean isNewCollectionRecord)
void linkEditableUserFields()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |