EJB et persistance des données : bonnes pratiques - Java - Programmation
Marsh Posté le 07-01-2011 à 16:48:40
Salut,
Je pense que les deux solutions sont possibles.
Cependant, l'une sera plus adaptée que l'autre selon la fréquence des transactions et le volume des arguments.
Ex: si une personne entre 5 adresses, et sauve dans l'appli:
- Solution 1: 1 transaction atomique est nécessaire
- Solution 2: 5 transactions atomiques sont nécessaires
La solution 2 sera dans ce cas la moins performante car nécessitera l'établissement de la connexion, la localisation de la procédure distante, l'appel distant, la fermeture de connexion et tout ça 5 fois.
Donc la solution 1 serait plus performante, puisque réalisable en un seul appel. Sauf que si une valeur Personne possède 1000 adresses et que le réseau est lent, 1 seule transaction pour l'écrire en base signifiera une transaction beaucoup plus longue.
Donc la solution 1 privilégie la sécurité et l'intégrité des données écrites (commit effectué quand l'objet Personne entier a été écrit), la solution 2 privilégie une continuité de service maximale (commit effectué à chaque adresse écrite).
Marsh Posté le 07-01-2011 à 17:08:28
Merci pour tes éclaircissements,
J'ai finalement opté pour la 2ème solution afin que chaque bean garde une certaine indépendance :
le fait de devoir appeler l'objet Personne pour sauvegarder une Adresse est finalement assez contraignant (et mes assertions se chargent de vérifier l'intégrité des données dans la fonction save).
Par rapport à ton exemple, le projet est une boutique en ligne, je voulais appliquer la 1ère solution à des Produits qui appartiennent à une Catégorie.
Si je souhaitait sauvegarder un Produit en cascade via une Catégorie, cela va me sauvegarderait les milliers de produits que contiendrait la catégorie pour finalement un seul produit.
Merci encore
Marsh Posté le 06-01-2011 à 10:27:42
Bonjour à tous,
Dans le cadre d'un projet universitaire, je développe actuellement une application tournant sur un serveur Glassfish.
Une question de bonnes pratiques me vient à l'esprit :
Lors de la persistance de données, faut-il privilégier la persistance via les listes en cascade ou via une méthode appropriée ?
Exemple :
Une personne possède une ou plusieurs adresses.
Quelle est la meilleure pratique ?
Sachant que la 1ère solution m'évite de créer la méthode saveAdresse....
Merci d'avance