Cascading

There is one annotation attribute that we have ignored so far: the cascade() attribute of the @OneToOne, @OneToMany, @ManyToOne, and @ManyToMany relationship annotations. This section discusses in detail the behavior that is applied when using the cascade() attribute.

When you perform an entity manager operation on an entity bean instance, you can automatically have the same operation performed on any relationship properties the entity may have. This is called cascading. For example, if you are persisting a new Employee entity with a new address and phone number, all you have to do is wire the object, and the entity manager can automatically create the employee and its related entities, all in one persist() method call:

Employee employee = new Employee();
customer.setAddress(new Address());
customer.getPhoneNumbers().add(new Phone());

// create them all in one entity manager invocation
entityManager.persist(employee);

With the Java Persistence specification, cascading can be applied to a variety of entity manager operations, including persist(), merge(), remove(), and refresh(). This feature is enabled by setting the javax.persistence.CascadeType of the relationship annotation’s cascade() attribute. The CascadeType is defined as a Java enumeration:

public enum CascadeType
{
   ALL, PERSIST,
   MERGE, REMOVE,
   REFRESH
}

The ALL value represents all of the cascade operations. The remaining values represent individual cascade operations. The cascade() attribute is an array of the cascade ...

Get Enterprise JavaBeans 3.1, 6th Edition 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.