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.