EJBs sont des composants distants Minimiser les appels aux EJBs « Design pattern » Data Transfer Object = JavaBean = programmation à gros grain par rapport à une programmation à grain fin. Grain fin : nom = getNom(); prenom = getPrenom() dn = getDateNaissance() Gros grain : PersonneDTO p = getPersonne(); PersonneDTO { String nom, prenom; Date dateNaissance; }
Gros grain : la programmation est moins explicite. Grain fin PersonneEJB p; p.setNom(nom); p.setPrenom(prenom); Gros grain PersonneEJB p = …; PersonneDTO dto = …; p.modifier(dto); Généralement, lors d’une action applicative, on accède à plusieurs composants.
réseau Design pattern « Session Facade » Couche service matérialisée par un EJB Session Stateless. EJB Session Stateless en Facade EJB Entity EJB Entity EJB Entity DTO Container EJB
Avantages, on a le meilleur des 2 mondes : 1 seul accès réseau par action Accès aux Entity explicites en grain fin Encapsulation des transactions aux niveaux du Session Stateless
Problème de performance au niveau de la génération de liste lors des recherches. Les finders génèrent n + 1 requêtes SQL : 1 pour déterminer la liste des clés primaires des objets n pour récupérer les propriétés des objets. Pas de load des objets reliés. La recherche peut se faire en une requête SQL. Candidature Candidat Ville Responsable