1. Make a Java Entity Class Model

The starting point for making a Java Entity class model is an OO class model with derived inverse reference properties like the one discussed above (in Figure 7.4), which we present here again, for convenience:

Notice that the model contains two derived inverse reference properties: Publisher::/publishedBooks and Author::/authoredBooks. Each of them is linked to a master property, from which it is derived, by means of an inverse-of constraint. Consequently, each of them represents a pair of mutually inverse reference properties corresponding to a bidirectional association.

We now show how to derive a Java Entity class model from the OO class model:

  1. Turn each class into a «Java Entity» class, making all properties private.

  2. Replace the platform-independent datatype names of the OO class model with corresponding Java datatype classes (Integer, Float, etc.).

  3. Add a «get/set» stereotype to all non-derived properties for indicating that they need getters and setters.

  4. Add a «get» stereotype to all derived properties for indicating that they need getters, only.

  5. For any reference property, depending on the functionality type of the association represented by it, add a corresponding keyword as property modifier. For the given OO class model, add the following property modifiers:

    • oneToMany to the derived reference property Publisher::/publishedBooks,

    • manyToOne to the reference property Book::publisher

    • manyToMany to the reference property Book::authors

    • manyToMany to the derived reference property Author::/authoredBooks

  6. For any derived reference property designated as the inverse of another reference property, replace its {inverse of ...} property modifier with a corresponding {mappedBy="..."} property modifier.

  7. Create the required property constraint check operations.

  8. Create an add, and a remove operation for each multi-valued property.

This leads to the following Java Entity class model: