After modeling data relationships with entity beans, you may want to add the ability to perform a cascading delete. Cascading deletes are a valuable timesaving tool when you're working with data. In addition, they are an essential part of maintaining the referential integrity of your data within the database. Since entity beans can model data relationships, there is a way to make entity beans to handle cascading deletes.

To create a cascading delete, we first need a relationship between two entity beans. This tip defines a relationship between two components Person and Name and uses cascade deletion:

The code of the NameEJB:

 public abstract class NameBean implements EntityBean {
    ...
    
    abstract public String getFirstName();
    abstract public void setFirstName(String firstName);
    
    abstract public String getLastName();
    abstract public void setLastName(String lastName);
    
    abstract public PersonBean getPerson();
    abstract public void setPerson(PersonBean person);
    
    ...
}

The code of the PersonEJB:
public abstract class PersonBean implements EntityBean {
    ...
 
    abstract public NameBean getName();
    abstract public void setName(NameBean name);
    
    ...
}

Deployment descriptor with relationship declarations:

<ejb-jar>
   <enterprise-beans>
	<!-- declaration of beans -->
	...
   </enterprise-beans>
	
   <assembly-descriptor>
	<relationships>
		<ejb-relation>
			<!-- declaration of relationships -->
			<ejb-relation-name>Person-Name</ejb-relation-name>
			<ejb-relationship-role>
				<ejb-relationship-role-name>
					Person-Has-Name
				</ejb-relationship-role-name>

				<multiplicity>one</multiplicity>
					
				<relationship-role-source>
					<ejb-name>PersonEJB</ejb-name>
				</relationship-role-source>
					
				<cmr-field>
					<cmr-field-name>name</cmr-field-name>
				</cmr-field>

			</ejb-relationship-role>
				
			<ejb-relationship-role>
				<ejb-relationship-role-name>
					Name-Belong-To-Person
				</ejb-relationship-role-name>
					
				<multiplicity>One</multiplicity>
				
	<!-- this indicates the relationship supports cascade deletes -->
				<cascade-delete/>
					
				<relationship-role-source>
					<ejb-name>NameEJB</ejb-name>
				</relationship-role-source>
					
				<cmr-field>
					<cmr-field-name>
                                            person
					</cmr-field-name>
				</cmr-field>
					
			</ejb-relationship-role>

		</ejb-relation>
	</relationships>
   </assembly-descriptor>
</ejb-jar>