Un bon vieil objet Java Ce nom est utilisé pour souligner qu'un objet donné est un objet Java ordinaire, et non un objet spécial tel que ceux définis par le cadre EJB 2.
classe A {}
classe B étend/implémente C {}
Note : B est non POJO quand C est une classe de framework distribué ou ifc. par exemple javax.servlet.http.HttpServlet, javax.ejb.EntityBean ou J2EE extn et non sérialisable/comparable. Puisque serializable/comparable sont valides pour POJO.
Ici, A est un objet simple qui est indépendant. B est un objet spécial puisque B étend/implémente C. Ainsi, l'objet B obtient une signification supplémentaire de C et B est restrictif pour suivre les règles de C. et B est étroitement liés avec un cadre distribué. Par conséquent, l'objet B n'est pas un POJO selon sa définition.
Le code utilisant la classe Une référence d'objet ne doit rien savoir du type de celle-ci, et elle peut être utilisée avec de nombreux frameworks.
Ainsi, une POJO ne devrait pas avoir à 1) étendre des classes pré-spécifiées et 2) implémenter des interfaces pré-spécifiées.
JavaBean est un exemple de POJO qui est sérialisable, possède un constructeur sans argument et permet d'accéder aux propriétés à l'aide de méthodes getter et setter qui suivent une convention d'appellation simple.
POJO se concentre uniquement sur la logique métier et ne dépend pas des cadres (d'entreprise). Cela signifie qu'il possède le code pour la logique métier mais que la façon dont cette instance est créée, le service (EJB ) auquel cet objet appartient et ses caractéristiques spéciales (avec ou sans état) seront décidés par les frameworks en utilisant un fichier xml externe.
Exemple 1 : JAXB est le service qui permet de représenter des objets java en XML. Ces objets java sont simples et sont dotés de getters et setters par défaut.
Exemple 2 : Hibernate où une simple classe java sera utilisée pour représenter une Table. Les colonnes seront ses instances.
Exemple 3 : Services REST. Dans les services REST, nous aurons une couche de service et une couche Dao pour effectuer certaines opérations sur la base de données. Ainsi, Dao aura des requêtes et des opérations spécifiques au fournisseur. La couche de service sera responsable de l'appel de la couche DAO pour effectuer des opérations sur la base de données. Les API (méthodes) de création ou de mise à jour des DAO prendront des POJO comme arguments, et mettront à jour ces POJO et les inséreront dans la base de données. Ces POJO (classe Java) n'auront que des états (variables d'instance) de chaque colonne et ses getters et setters.
Dans la pratique, certaines personnes trouvent les annotations élégantes, alors qu'elles considèrent le XML comme verbeux, laid et difficile à maintenir, d'autres encore trouvent que les annotations polluent le modèle POJO. Ainsi, comme alternative à XML, de nombreux frameworks (par exemple Spring, EJB et JPA) permettent d'utiliser les annotations à la place ou en plus de XML :
Avantages :
Le découplage du code d'application des cadres d'infrastructure est l'un des nombreux avantages de l'utilisation des POJO. L'utilisation des POJO assure la pérennité de la logique métier de votre application en la découplant des cadres d'infrastructure volatiles et en constante évolution. La mise à niveau vers une nouvelle version ou le passage à un autre framework devient plus facile et moins risqué. Les POJO facilitent également les tests, ce qui simplifie et accélère le développement. Votre logique d'entreprise sera plus claire et plus simple car elle ne sera pas enchevêtrée avec le code de l'infrastructure.
Références : wiki source2