Objet métier (pourquoi l'annote-t-on?)
Bonsoir,
J'ai besoin de votre aide pour comprendre avec précision l'architecture logicielle et le découpage en couches.
Prenons l'exemple d'une application gérant des utilisateurs stockés en BDD (table User avec un champ (id, name, pass)).
On a besoin d'un objet métier "User" (qui comme son nom l'indique est l'objet qui sera manipulé dans l'application)
Code:
1 2 3 4 5 6 7 8
|
public class User{
int id;
String name;
String pass;
+get/set
} |
Afin de faire persister cet objet on rajoute des annotations JPA pour obtenir finalement :
Code:
1 2 3 4 5 6 7 8 9 10
|
@entity
public class User{
@Id
int id;
String name;
String pass;
+get/set
} |
Donc voici enfin ma question, je ne comprends pas pourquoi on a "le droit" d'annoter l'objet métier? En effet, pour moi l'objet métier devrait être indépendant de la manière dont il persiste. Ainsi, si demain, les users ne soient plus seulement en bdd mais aussi stockés ds un fichier Xml. Comment fait-on? On crée un nouvel objet? mais du coup il faut refaire toutes la partie traitement?
Pour moi il serait plus logique d'avoir un objet métier
Code:
1 2 3 4 5 6 7 8
|
public class User{
int id;
String name;
String pass;
+get/set
} |
puis d'avoir un objet de type persitent BDD
Code:
1 2 3 4 5 6 7 8
|
public class UserBDD{
int id;
String name;
String pass;
+get/set
} |
puis un objet
Code:
1 2 3 4 5 6 7 8
|
public class UserXml{
int id;
String name;
String pass;
+get/set
} |
Rem : Éventuellement, ces objets pourraient ne pas avoir le même nombre d'attributs.
Puis on rajouterait 2 composants chargés de créer des objets métiers (user). Un transformant des UserXml en user et l'autre des userBdd et user.
Ainsi toute notre partie traitement n'aurait à subir aucun changement.
Ex : la fonction métier : findAllUser renverrait des users qu'ils viennent de la bdd ou du xml.
Etant donné que sur le net tous les exemples font comme ca en quoi mon raisonnement est faux? et surtout comment faire pour gérer des éléments
pouvant venir de 2 sources différentes?
D'avance merci pour votre aide.