Deleting Instances
You can call one of the following PersistenceManager
methods to delete one or
more persistent instances from the datastore:
void deletePersistent(Object obj); void deletePersistentAll(Object[] objs); void deletePersistentAll(Collection objs);
They must be called in the context of an active transaction, or a
JDOUserException
is thrown. The representation of the instance in the
datastore is deleted when it is flushed to the datastore (via commit( )
or
evict( )
). Chapter 13 covers the evict( )
method. These methods have no effect
on instance parameters that are already deleted in the transaction. They
throw a JDOUserException
if a parameter is transient or managed by a different
PersistenceManager
.
The following application is used to delete a customer from the
datastore. This includes deleting all the customer’s transactions. Line
[1] accesses the Customer
instance. If line [2] determines that Rental
instances are still associated with the
Customer
instance, the application
prints an error message and returns without removing any data.
Otherwise, it deletes the Customer
instance and its associated Address
and Transaction
instances.
package com.mediamania.store; import java.util.Set; import java.util.List; import com.mediamania.MediaManiaApp; public class DeleteCustomer extends MediaManiaApp { private String lastName; private String firstName; public DeleteCustomer(String fname, String lname) { lastName = lname; firstName = fname; } public static void main(String[] ...
Get Java Data Objects now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.