2. Make a JPA Entity Class Model

The starting point for making a JavaScript data model is an association-free information design model where reference properties represent associations. The following model for our example app contains the multi-valued reference property Book::authors, which represents the unidirectional many-to-many association Book-has-Author:

This model contains, in addition to the unidirectional many-to-one association Book-has-Publisher, the unidirectional many-to-many association Book-has-Author, which corresponds to the multi-valued reference property Book::authors.

The meaning of the design model and its reference properties publisher and authors can be illustrated by a sample data population for the three model classes:

Table 13.1. Sample data for Publisher

Name Address
Bantam Books New York, USA
Basic Books New York, USA

Table 13.2. Sample data for Book

ISBN Title Year Authors Publisher
0553345842 The Mind's I 1982 1, 2 Bantam Books
1463794762 The Critique of Pure Reason 2011 3
1928565379 The Critique of Practical Reason 2009 3
0465030793 I Am A Strange Loop 2000 2 Basic Books

Table 13.3. Sample data for Author

Author ID Name
1 Daniel Dennett
2 Douglas Hofstadter
3 Immanuel Kant

We obtain the JPA entity class Author from the corresponding information design class, as explained in the previous parts of this tutorial, by (1) replacing the stereotype «stdid» with the property modifier {id}, (2) making all properties private, (3) using Java datatypes, (4) adding public getters and setters, (5) adding a toString function, (6) adding the data storage methods add, retrieve, update and destroy, as well as the helper methods clearData and createTestData:

In the JPA entity class model, for any dot on a non-functional association end in the design model, such as the dot on the Author association end in the class diagram above, we show the reference property representing the association end and annotate it with the functionality type of the unidirectional association represented by it. In our example, we add a reference property authors in the entity class Book and annotate it with the association's functionality type manyToMany: