Dependent classes are Value Objects.
They are mostly read-only, implement Serializable and have public members.
Since
EJB data can be wrapped in one single Object(Dependent class), they tend to reduce the number of remote calls.
I could think of this example:
In a BMP Entity bean scenario...Order and Orderline Items.
Order can be an Entity bean but Orderline Item need not necessarily be an Entity bean. Orderline Items could be a collection (Vector/ArrayList) of Orderline Items defined as a member inside the Order Entity bean.
Each Orderline Item is defined as a simple
Java class implementing Serializable. The Collection of Orderline Items is populated/updated in ejbLoad()/ejbStore()...A public method could be exposed in the remote method to access the Orderline items.
In this scenario, Orderline Items are called Dependent classes.This kind of a strategy improves the performance of a BMP entity bean.
You can implement the above scenario using a CMP2.0 Entity beans also without using any dependent classes, but that is a design decision...
Hope that helps!