|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Persistent collections are treated as value objects by Hibernate.
ie. they have no independent existence beyond the object holding
a reference to them. Unlike instances of entity classes, they are
automatically deleted when unreferenced and automatically become
persistent when held by a persistent object. Collections can be
passed between different objects (change "roles") and this might
cause their elements to move from one database table to another.
Hibernate "wraps" a java collection in an instance of
PersistentCollection. This mechanism is designed to support
tracking of changes to the collection's persistent state and
lazy instantiation of collection elements. The downside is that
only certain abstract collection types are supported and any
extra semantics are lost
Applications should never use classes in this package
directly, unless extending the "framework" here.
Changes to structure of the collection are recorded by the
collection calling back to the session. Changes to mutable
elements (ie. composite elements) are discovered by cloning their
state when the collection is initialized and comparing at flush
time.
Method Summary | |
boolean |
afterInitialize()
Called after initializing from cache |
void |
afterRowInsert(CollectionPersister persister,
Object entry,
int i)
Called after inserting a row, to fetch the natively generated id |
void |
beforeInitialize(CollectionPersister persister,
int anticipatedSize)
Called before any elements are read into the collection, allowing appropriate initializations to occur. |
void |
beginRead()
Called just before reading any rows from the JDBC result set |
void |
clearDirty()
Clear the dirty flag, after flushing changes to the database. |
void |
dirty()
Mark the collection as dirty |
Serializable |
disassemble(CollectionPersister persister)
Disassemble the collection, ready for the cache |
boolean |
empty()
Is the collection empty? (don't try to initialize the collection) |
boolean |
endRead()
Called after reading all rows from the JDBC result set |
Iterator |
entries(CollectionPersister persister)
Iterate all collection entries, during update of the database |
boolean |
entryExists(Object entry,
int i)
Does an element exist at this entry in the collection? |
boolean |
equalsSnapshot(CollectionPersister persister)
Does the current state exactly match the snapshot? |
void |
forceInitialization()
To be called internally by the session, forcing immediate initialization. |
Iterator |
getDeletes(CollectionPersister persister,
boolean indexIsFormula)
Get all the elements that need deleting |
Object |
getElement(Object entry)
Get the value of the given collection entry |
Object |
getIdentifier(Object entry,
int i)
Get the index of the given collection entry |
Object |
getIndex(Object entry,
int i,
CollectionPersister persister)
Get the index of the given collection entry |
Serializable |
getKey()
Get the current collection key value |
Collection |
getOrphans(Serializable snapshot,
String entityName)
get all "orphaned" elements |
Object |
getOwner()
Get the owning entity. |
Collection |
getQueuedOrphans(String entityName)
Get the "queued" orphans |
String |
getRole()
Get the current role name |
Serializable |
getSnapshot(CollectionPersister persister)
Return a new snapshot of the current state of the collection |
Object |
getSnapshotElement(Object entry,
int i)
Get the snapshot value of the given collection entry |
Serializable |
getStoredSnapshot()
Get the snapshot cached by the collection instance |
Object |
getValue()
return the user-visible collection (or array) instance |
boolean |
hasQueuedOperations()
Does this instance have any "queued" additions? |
void |
initializeFromCache(CollectionPersister persister,
Serializable disassembled,
Object owner)
Read the state of the collection from a disassembled cached value |
boolean |
isDirectlyAccessible()
Could the application possibly have a direct reference to the underlying collection implementation? |
boolean |
isDirty()
Is the collection dirty? Note that this is only reliable during the flush cycle, after the collection elements are dirty checked against the snapshot. |
boolean |
isRowUpdatePossible()
|
boolean |
isSnapshotEmpty(Serializable snapshot)
Is the snapshot empty? |
boolean |
isUnreferenced()
Is the collection unreferenced? |
boolean |
isWrapper(Object collection)
Is this the wrapper for the given underlying collection instance? |
boolean |
needsInserting(Object entry,
int i,
Type elemType)
Do we need to insert this element? |
boolean |
needsRecreate(CollectionPersister persister)
Do we need to completely recreate this collection when it changes? |
boolean |
needsUpdating(Object entry,
int i,
Type elemType)
Do we need to update this element? |
void |
postAction()
After flushing, clear any "queued" additions, since the database state is now synchronized with the memory state. |
void |
preInsert(CollectionPersister persister)
Called before inserting rows, to ensure that any surrogate keys are fully generated |
Iterator |
queuedAdditionIterator()
Iterate the "queued" additions |
Object |
readFrom(ResultSet rs,
CollectionPersister role,
CollectionAliases descriptor,
Object owner)
Read a row from the JDBC result set |
boolean |
setCurrentSession(SessionImplementor session)
Associate the collection with the given session. |
void |
setOwner(Object entity)
Set the reference to the owning entity |
void |
setSnapshot(Serializable key,
String role,
Serializable snapshot)
After flushing, re-init snapshot state. |
boolean |
unsetSession(SessionImplementor currentSession)
Disassociate this collection from the given session. |
boolean |
wasInitialized()
Is this instance initialized? |
Method Detail |
public Object getOwner()
public void setOwner(Object entity)
public boolean empty()
public void setSnapshot(Serializable key, String role, Serializable snapshot)
public void postAction()
public Object getValue()
public void beginRead()
public boolean endRead()
public boolean afterInitialize()
public boolean isDirectlyAccessible()
public boolean unsetSession(SessionImplementor currentSession)
public boolean setCurrentSession(SessionImplementor session) throws HibernateException
HibernateException
- if the collection was already associated
with another open sessionpublic void initializeFromCache(CollectionPersister persister, Serializable disassembled, Object owner) throws HibernateException
HibernateException
public Iterator entries(CollectionPersister persister)
public Object readFrom(ResultSet rs, CollectionPersister role, CollectionAliases descriptor, Object owner) throws HibernateException, SQLException
HibernateException
SQLException
public Object getIdentifier(Object entry, int i)
public Object getIndex(Object entry, int i, CollectionPersister persister)
persister
- it was more elegant before we added this...public Object getElement(Object entry)
public Object getSnapshotElement(Object entry, int i)
public void beforeInitialize(CollectionPersister persister, int anticipatedSize)
persister
- The underlying collection persister.anticipatedSize
- The anticipated size of the collection after initilization is complete.public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException
HibernateException
public boolean isSnapshotEmpty(Serializable snapshot)
public Serializable disassemble(CollectionPersister persister) throws HibernateException
HibernateException
public boolean needsRecreate(CollectionPersister persister)
public Serializable getSnapshot(CollectionPersister persister) throws HibernateException
HibernateException
public void forceInitialization() throws HibernateException
HibernateException
public boolean entryExists(Object entry, int i)
public boolean needsInserting(Object entry, int i, Type elemType) throws HibernateException
HibernateException
public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException
HibernateException
public boolean isRowUpdatePossible()
public Iterator getDeletes(CollectionPersister persister, boolean indexIsFormula) throws HibernateException
HibernateException
public boolean isWrapper(Object collection)
public boolean wasInitialized()
public boolean hasQueuedOperations()
public Iterator queuedAdditionIterator()
public Collection getQueuedOrphans(String entityName)
public Serializable getKey()
public String getRole()
public boolean isUnreferenced()
public boolean isDirty()
public void clearDirty()
public Serializable getStoredSnapshot()
public void dirty()
public void preInsert(CollectionPersister persister) throws HibernateException
HibernateException
public void afterRowInsert(CollectionPersister persister, Object entry, int i) throws HibernateException
HibernateException
public Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException
HibernateException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |