Dans les applications JPA (Java Persistence API) manipulant les EJB Entity sur des serveurs d'applications (GlassFish, JBoss, WebLogic …) il faut définir un pool de connexion, puis un DataSource utilisant ce pool et référencé dans JNDI (Java Naming and Directory Interface), c'est ce DataSource qui sera référencé ensuite dans le fichier persistence.xml, exemple sous GlassFish :

Pool de connexion

DataSource

persitence.xml

Le fichier persistence.xml définit l'unité de persistance qui doit avoir un nom unique (ici Net_ArticlesPU) qui embraque des ressources comme le ou les DataSource ainsi que l'inclusion ou l'exclusion de tout ou partie des EBJ Entity.

EJB Entity

L'EJB Entity établit le lien entre les colonnes de la table référencée et les propriétés de la classe, il définit les NamedQueries (Requêtes Nommées) qui seront exploitées par l'EJB Session. C'est l'EJB Entity qui portera les données extraites de la base de données.

EJB Session

La connexion est montée dans chaque EJB Session via le référencement de l'Entity Manager dans le contexte de persistance :

L'EJB Session référence le ou les EJB Entity via un import et exploite les requêtes nommées via l'Entity Manager :

L'EJB Session constitue une interface entre la Servlet et les EJB Entity.

Remarque : le passage par un EJB Session n'est pas une obligation technique, on pourrait par exemple référencer directement l'Entity Manager dans le contrôleur (Servlet), mais ce serait contraire aux bonnes pratiques (Design Pattern).