Top Banner
v041109 Container Managed Relat ionships 1 Enterprise Java Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel
38

Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

Dec 13, 2015

Download

Documents

Rolf Clark
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 1

EnterpriseJava

Container Managed Relationships(CMR)

Source:

“Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel

Page 2: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 2

EnterpriseJava

CMR

• Enabled with EJB 2.0– EJB 1.1 had support for persistent fields but not

relationships

• Extends the abstract schema of the Entity Bean– Abstract accessors must be defined for CMR fields– CMR uses only Local Interfaces

• Only EJBs deployed together in the same deployment descriptor may have relationships with one another– use same database and JVM

Page 3: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 3

EnterpriseJava

Seven Relationship Types

• One-to-One (unidirectional, bidirectional)• One-to-Many (unidirectional, bidirectional)• Many-to-One (unidirectional)

– Many-to-One and One to Many bidirectional identical

• Many-to-Many (unidirectional, bidirectional)

Page 4: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 4

EnterpriseJava

Defined and Initialized in the EJBClass

public abstract class BorrowerEJB implements EntityBean {

public abstract void setId(String id);

public abstract String getId();

public abstract void setIdentity(PersonLocal person);

public abstract PersonLocal getIdentity();

//create transaction does not complete until both the ejbCreate and ejbPostCreate are called

public String ejbCreate(PersonLocal identity) throws BorrowerException {

setId(identity.getId()); //primary key values must be set in ejbCreate

return null;

}

public void ejbPostCreate(PersonLocal identity) {

setIdentity(identity); //relationships must be set in ejbPostCreate

}

}

id will be defined as a CMP Field

identity will be defined as a CMR Field

Page 5: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 5

EnterpriseJava

Used in the EJB Class

public String getName() {

return getIdentity().getFirstName() + " " + getIdentity().getLastName();

}

public String getPhoneNumber() {

return getIdentity().getPhoneNumber();

}

public String getAddress() {

return getIdentity().getAddress();

}

Page 6: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 6

EnterpriseJava

Defined in ejb-jar.xml

<ejb-jar>

<enterprise-beans>

<entity>

...

</entity>

...

</enterprise-beans>

<relationships>

<ejb-relation> <!-- Borrower(0..1)->(1)Person (unidirectional) -->

<ejb-relation-name>Borrower-Person</ejb-relation-name>

...

</ejb-relation>

...

</relationships>

</ejb-jar>

Page 7: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 7

EnterpriseJavaDefining Borrower->Person

in ejb-jar.xml<ejb-relation> <!-- Borrower(0..1)->(1)Person (unidirectional) -->

<ejb-relation-name>Borrower-Person</ejb-relation-name>

<ejb-relationship-role>

<ejb-relationship-role-name>Borrower-to-Identity</ejb-relationship-role-name>

<multiplicity>One</multiplicity>

<relationship-role-source>

<ejb-name>Borrower</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>identity</cmr-field-name>

</cmr-field>

</ejb-relationship-role>

Matches void setIdentity(PersonLocal)PersonLocal getIdentity()from EJB Class

Page 8: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 8

EnterpriseJavaDefining Person->Borrower

in ejb-jar.xml <ejb-relationship-role>

<ejb-relationship-role-name>Identity-to-Borrower</ejb-relationship-role-name>

<multiplicity>One</multiplicity>

<relationship-role-source>

<ejb-name>Person</ejb-name>

</relationship-role-source>

</ejb-relationship-role>

</ejb-relation> Unidirectional choice signified by nocmr-field in Person mapping back to Borrower

Page 9: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 9

EnterpriseJava

ejb-jar.xml

• Every Relationship must have a name• Every <ejb-relation> has exactly two <ejb-

relationship-role> sub-elements defined– ejb-relationship-role must define a cmr-field to be

navigatable to the related object (otherwise unidirectional)

Page 10: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 10

EnterpriseJava

Stored in the Database

create table Person (

id varchar(12) not null unique,

firstName varchar(32) not null,

lastName varchar(32) not null,

address varchar(128),

phoneNumber char(10)

);

create table Borrower (

id varchar(12) not null,

beginDate date not null,

endDate date,

person_id char(12)

);

Page 11: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 11

EnterpriseJavaMapped to the Database

by the Implementation• weblogic-cmp-rdbms-jar.xml<weblogic-rdbms-jar>

<weblogic-rdbms-bean>

...

</weblogic-rdbms-bean>

<weblogic-rdbms-relation>

</weblogic-rdbms-relation>

...

<create-default-dbms-tables>False</create-default-dbms-tables>

</weblogic-rdbms-jar>

Page 12: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 12

EnterpriseJavaMapped to the Database

by the Implementation<weblogic-rdbms-relation>

<relation-name>Borrower-Person</relation-name>

<weblogic-relationship-role>

<relationship-role-name>Borrower-to-Identity

</relationship-role-name>

<column-map>

<foreign-key-column>person_id</foreign-key-column>

<key-column>id</key-column>

</column-map>

</weblogic-relationship-role>

<weblogic-relationship-role>

<relationship-role-name>Identity-to-Borrower

</relationship-role-name>

</weblogic-relationship-role>

</weblogic-rdbms-relation>

names must matchvalues specified inejb-jar.xml

id is column in Person

person_id is column in Borrower

Page 13: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 13

EnterpriseJavaMapped to the Database

by the Implementation• jbosscmp-jdbc.xml

</jbosscmp-jdbc>

</enterprise-beans>

</enterprise-beans>

<relationships>

<ejb-relation>

</ejb-relation>

</relationships>

</jbosscmp-jdbc>

Page 14: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 14

EnterpriseJavaMapped to the Database

by the Implementation<ejb-relation> <ejb-relation-name>Borrower-Person</ejb-relation-name> <foreign-key-mapping/>

<ejb-relationship-role> <ejb-relationship-role-name>Borrower-to-Identity </ejb-relationship-role-name> </ejb-relationship-role>

<ejb-relationship-role> <ejb-relationship-role-name>Identity-to-Borrower </ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>person_id</column-name> </key-field> </key-fields> </ejb-relationship-role></ejb-relation>

names must matchvalues specified inejb-jar.xml

id is column in Person

person_id is column in Borrower

Page 15: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 15

EnterpriseJava

One-to-One Unidirectionalinterface BorrowerLocal String getId(); String getName(); String getPhoneNumber(); String getAddress(); Date getBeginDate(); Date getEndDate(); boolean isValid(); void terminate();

interface PersonLocal String getId(); String getFirstName(); void setFirstName(String fname); String getLastName(); void setLastName(String lname); String getAddress(); void setAddress(String address); String getPhoneNumber(); void setPhoneNumber(String number);

1

0..1

table Person id varchar(12) not null unique, firstName varchar(32) not null, lastName varchar(32) not null, address varchar(128), phoneNumber char(10)

table Borrower id varchar(12) not null, beginDate date not null, endDate date, person_id varchar(12)

1

0..1

Page 16: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 16

EnterpriseJava

One-to-One Unidirectional

• BorrowerEJB public abstract void setIdentity(PersonLocal person); public abstract PersonLocal getIdentity();• ejb-jar.xml <cmr-field> <cmr-field-name>identity</cmr-field-name> </cmr-field>• weblogic-cmp-rdbms-jar.xml <column-map> <foreign-key-column>person_id</foreign-key-column> <key-column>id</key-column> </column-map>• jbosscmp-jdbc.xml

<key-field> <field-name>id</field-name> <column-name>person_id</column-name></key-field>

Page 17: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 17

EnterpriseJavaNot Possible to Share Object

from 1:1 Relation

a:Borrower x:Person

b:Borrower y:Person

PersonLocal x = a.getIdentity();b.setIdentity(x);

a:Borrower x:Person

b:Borrower y:Person

Page 18: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 18

EnterpriseJava

One-to-One Bidirectionalinterface BorrowerLocal String getId(); String getName(); String getPhoneNumber(); String getAddress(); Date getBeginDate(); Date getEndDate(); boolean isValid(); void terminate();

interface PersonLocal String getId(); String getFirstName(); void setFirstName(String fname); String getLastName(); void setLastName(String lname); String getAddress(); void setAddress(String address); String getPhoneNumber(); void setPhoneNumber(String number); Borrower getBorrower()

1

0..1

table Person id varchar(12) not null unique, firstName varchar(32) not null, lastName varchar(32) not null, address varchar(128), phoneNumber char(10)

table Borrower id varchar(12) not null, beginDate date not null, endDate date, person_id varchar(12)

1

0..1

Page 19: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 19

EnterpriseJava

One-to-One Bidirectional

• BorrowerEJB public abstract void setIdentity(PersonLocal person); public abstract PersonLocal getIdentity();

• PersonEJB public abstract void setBorrower(BorrowerLocal person); public abstract BorrowerLocal getBorrower ();

• ejb-jar.xml <cmr-field> //from borrower to person <cmr-field-name>identity</cmr-field-name> </cmr-field> <cmr-field> //from person to borrower <cmr-field-name>borrower</cmr-field-name> </cmr-field>

Note!!! - bidirectional and unidirectional database schema is identical. Only EJB class and portions of the deployment descriptor changed

Page 20: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 20

EnterpriseJava

One-to-One Bidirectional (cont.)

• weblogic-cmp-rdbms-jar.xml <column-map> //from borrower to person

<foreign-key-column>person_id</foreign-key-column>

<key-column>id</key-column>

</column-map>

• jbosscmp-jdbc.xml<key-field>

<field-name>id</field-name>

<column-name>person_id</column-name>

</key-field>

Page 21: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 21

EnterpriseJavaNot Possible to Share Object

from 1:1 Relation

a:Borrower x::Person

b:Borrower y::Person

PersonLocal x = a.getIdentity();b.setIdentity(x);

a:Borrower x::Person

b:Borrower y::Person

Page 22: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 22

EnterpriseJava

One-to-Many Bidirectionalinterface BorrowerLocal Set getCheckouts(); Date getBeginDate(); Date getEndDate(); boolean isValid(); void terminate();

interface CheckoutLocal Integer getId(); Date getOutDate(); boolean isOverdue(); BorrowerLocal getBorrower();

*

1

table Checkout id int not null unique, outDate longint not null, borrower_id varchar(12)

table Borrower id varchar(12) not null, beginDate date not null, endDate date, person_id varchar(12)

*

1

Page 23: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 23

EnterpriseJava

One-to-Many Bidirectional

• BorrowerEJB public abstract void setCheckouts(Set checkouts);

public abstract Set getCheckouts();

public void addCheckout(CheckoutLocal checkout) throws CheckoutException

{ getCheckouts().add(checkout); }

– java.util.Collection and Set are only allowable CMR-many data types

• Collection allowed to have duplicates

• Set not allowed to have duplicates

• CheckoutEJB public abstract void setBorrower(BorrowerLocal borrower);

public abstract BorrowerLocal getBorrower();

Page 24: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 24

EnterpriseJava

One-to-Many Bidirectional (cont.)

• ejb-jar.xml <multiplicity>One</multiplicity>

<cmr-field>

<cmr-field-name>checkouts</cmr-field-name>

<cmr-field-type>java.util.Set</cmr-field-type>

</cmr-field>

<multiplicity>Many</multiplicity>

<cmr-field>

<cmr-field-name>borrower</cmr-field-name>

</cmr-field>

Page 25: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 25

EnterpriseJava

One-to-Many Bidirectional (cont.)

• weblogic-cmp-rdbms-jar.xml <column-map>

<foreign-key-column>borrower_id</foreign-key-column>

<key-column>id</key-column>

</column-map>

• jbosscmp-jdbc.xml<key-field>

<field-name>id</field-name>

<column-name>borrower_id</column-name>

</key-field>

Page 26: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 26

EnterpriseJavaNot Possible to Share Object

from 1:N Relation

a:Borrower x:Checkout

b:Borrower z:Checkout

Collection checkouts = a.getCheckouts();b.setCheckouts(checkouts);

y:Checkout

a:Borrower x:Checkout

b:Borrower z:Checkout

y:Checkout

Page 27: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 27

EnterpriseJavaNot Possible to Share Object

from 1:N Relation

a:Borrower x:Checkout

b:Borrower z:Checkout

BorrowerLocal b = z.getBorrower();y.setBorrower(b);

y:Checkout

a:Borrower x:Checkout

b:Borrower z:Checkout

y:Checkout

Page 28: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 28

EnterpriseJava

Iterating the Many Collection

for(java.util.Iterator i=getCheckouts().iterator(); i.hasNext(); ) {CheckoutLocal co = (CheckoutLocal)i.next();//use co

}• Must not add/remove elements from collection

while using iterator– only exception is use of “i.remove()”

• Empty collections are returned for no elements

Page 29: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 29

EnterpriseJava

Many-to-Many Unidirectionalinterface TopicLocal String getId(); String getTitle(); Set getAuthors(); void addAuthor(PersonLocal authors);

interface PersonLocal String getId(); String getFirstName();*

*

table Person id varchar(12) not null, firstName varchar(32)

table Topic id varchar(12) not null, title varchar(32) not null,

table PersonTopicLink topic_id varchar(12) not null, person_id varchar(12) not null

1

1

*

*

Use Linking Table for N:Nor linking legacy tables together

Page 30: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 30

EnterpriseJava

Many-to-Many Unidirectional

• TopicEJB public abstract void setAuthors(Set authors);

public abstract Set getAuthors();

public void addAuthor(PersonLocal author)

{ getAuthors().add(author); }

• ejb-jar.xml <multiplicity>Many</multiplicity>

<cmr-field>

<cmr-field-name>authors</cmr-field-name>

<cmr-field-type>java.util.Set</cmr-field-type>

</cmr-field>

<multiplicity>Many</multiplicity>

Page 31: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 31

EnterpriseJavaMany-to-Many Unidirectional (cont.)

weblogic-cmp-rdbms-jar.xml<weblogic-rdbms-relation>

<relation-name>Topic-Author</relation-name>

<table-name>cmrLibrary_PersonTopicLink</table-name>

<weblogic-relationship-role>

<relationship-role-name>Topic-to-Author</relationship-role-name>

<relationship-role-map>

<column-map>

<foreign-key-column>person_id</foreign-key-column>

<key-column>id</key-column>

</column-map>

</relationship-role-map>

</weblogic-relationship-role>

Page 32: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 32

EnterpriseJavaMany-to-Many Unidirectional (cont.)

weblogic-cmp-rdbms-jar.xml<weblogic-relationship-role>

<relationship-role-name>Author-to-Topic</relationship-role-name>

<relationship-role-map>

<column-map>

<foreign-key-column>topic_id</foreign-key-column>

<key-column>id</key-column>

</column-map>

</relationship-role-map>

</weblogic-relationship-role>

</weblogic-rdbms-relation>

Page 33: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 33

EnterpriseJavaMany-to-Many Unidirectional (cont.)

jbosscmp.xml<ejb-relation> <ejb-relation-name>Topic-Author</ejb-relation-name> <relation-table-mapping> <table-name>cmrLibrary_PersonTopicLink</table-name> </relation-table-mapping>

<ejb-relationship-role> <ejb-relationship-role-name> Topic-to-Author </ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>person_id</column-name> </key-field> </key-fields> </ejb-relationship-role>

Page 34: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 34

EnterpriseJavaMany-to-Many Unidirectional (cont.)

jbosscmp.xml<ejb-relationship-role> <ejb-relationship-role-name> Author-to-Topic </ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>topic_id</column-name> </key-field> </key-fields> </ejb-relationship-role>

</ejb-relation>

Page 35: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 35

EnterpriseJavaObjects Sharable in

N:N Relation

a:Topic x:Person

b:Topic z:Person

Collection authors = a.getAuthors();b.setAuthors(authors);

y:Person

a:Topic x:Person

b:Topic z:Person

y:Person

Page 36: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 36

EnterpriseJavaObjects Sharable in

N:N Relation

a:Topic x:Person

b:Topic z:Person

PersonLocal x = a.getAuthorByName(“x”);b.addAuthor(x);

y:Person

a:Topic x:Person

b:Topic z:Person

y:Person

Page 37: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 37

EnterpriseJava

Cascade Delete

• Causes the delete of one or more objects when a related object is deleted

• Used with one-to-one and one-to-many relationships– entity bean that causes the cascade delete must have a

multiplicity of one

• Implementation be deferred to database by container

Page 38: Enterprise Java v041109Container Managed Relationships1 Container Managed Relationships (CMR) Source: “Enterprise JavaBeans, 3rd Edition”, Richard Monson-Haefel.

v041109 Container Managed Relationships 38

EnterpriseJavaDefining Cascade Delete

in ejb-jar.xml <relationships>

<ejb-relation> <!-- Borrower(0..1)->(1)Person (unidirectional) -->

<ejb-relation-name>Borrower-Person</ejb-relation-name>

<ejb-relationship-role>

<ejb-relationship-role-name>Borrower-to-Identity

</ejb-relationship-role-name>

<multiplicity>One</multiplicity>

<cascade-delete/> <!-- delete Borrower role when delete Person -->

<relationship-role-source>

<ejb-name>Borrower</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>identity</cmr-field-name>

</cmr-field>

</ejb-relationship-role>