We have said, a number of times, that when an object is made persistent, that the objects it refers to are also made persistent. This was an oversimplification. In the mapping files for the classes, there is an attribute,
cascade
that lets us control how much, or how little, of a reference graph gets automatically persisted, deleted or updated. The values that it can be set to, and their meanings, are as follows: -
none
: no automatic action on the referenced object takes place. -
save-update
: automatically save or update the referenced object when the referencing object is saved or the transaction commits.
delete
: automatically delete the referenced object whendelete()
is called on the referencing object. Note that, if the referencing object is not deleted but merely removes its reference to the referenced object, then this option will not do anything and, potentially, a garbage (or orphan) object will be left in the database. -
delete-orphan
: automatically delete any object for whom the reference has been removed from the referencing object. -
all
: take the same actions assave-update
anddelete
but not that ofdelete-orphan
. -
all-delete-orphan
: take the same action assave-update
,delete
anddelete-orphan
.
No comments:
Post a Comment