Traiter l'enregistrement de version pour un même objet

faire des sauvegarde de différentes version d'un même objet

a marqué ce sujet comme résolu.

Bonjour a tous, J’espere que vous allez bien, alors là moi pas du tous§ Je suis suis confronté a un probleme qui me fait stagner depuis un bon moment!!! Mon projet est le suivant je créer un planning que j’enregistre dans une base de données et pour un planning donnée j’aimerais avoir differente version après certaines modifications du-dit planning et enregister ces versions en base de donnée pour pouvoir les reafficher au moment venue. J’aimerais bien comprendre comment se passe le mecanisme d’un tel travail en java en Java! J’ai une classe "Planning" qui est en rélation avec une autre classe "Person" et je voudrais pourvoir gerer les differentes version pour un planning deja creer en base de donnée.

J’aimerais bien comprendre comment se passe le mecanisme d’un tel travail en Java! J’ai une classe "Planning" qui est en rélation avec une autre classe "Person" et je voudrais pourvoir gerer les differentes version pour un planning deja creer en base de donnée.

kko

Que ce soit en Java ou dans un autre langage, ta problématique est conceptuelle pas technique puis-ce qu’il s’agit du travail en amont consistant à modéliser la base de données.

Alors très simplement, tu dois ajouter une clé étrangère idPerson dans la table Planning pour te permettre d’effectuer la jointure :

SELECT Planning.*
FROM Planning, Person
WHERE Planning.idPerson = Person.id

Puis si tu ne trouves aucune entrée, tu peux toujours récupérer la version standard du planning :

SELECT *
FROM Planning
WHERE idPerson IS NULL

Evidemment c’est une solution à adapter selon tes besoins. C’est ce que j’ai compris de ta demande : un modèle de planning puis une variante par utilisateur. En soit, on ne pourrait même pas parler de "version", car la solution serait effectivement bien plus technique (ça nécessite de détecter les modifications mineures et de rejouer le scénario) ce qui n’a pas l’air d’être du tout ta problématique.

+0 -0

Merci deja de ta reponse non il ne s’agit pas de ce probleme, en claire ça je l’ai deja resolu, enfin deja implementé c’etais pas vraiment un soucis. Peutetre que mon message precedent t’aideras mieu a comprendre ma demande!

J’aimerais bien comprendre comment se passe le mecanisme d’un tel travail en Java! J’ai une classe "Planning" qui est en rélation avec une autre classe "Person" et je voudrais pourvoir gerer les differentes version pour un planning deja creer en base de donnée.

kko

Que ce soit en Java ou dans un autre langage, ta problématique est conceptuelle pas technique puis-ce qu’il s’agit du travail en amont consistant à modéliser la base de données.

Alors très simplement, tu dois ajouter une clé étrangère idPerson dans la table Planning pour te permettre d’effectuer la jointure :

SELECT Planning.*
FROM Planning, Person
WHERE Planning.idPerson = Person.id

Puis si tu ne trouves aucune entrée, tu peux toujours récupérer la version standard du planning :

SELECT *
FROM Planning
WHERE idPerson IS NULL

Evidemment c’est une solution à adapter selon tes besoins. C’est ce que j’ai compris de ta demande : un modèle de planning puis une variante par utilisateur. En soit, on ne pourrait même pas parler de "version", car la solution serait effectivement bien plus technique (ça nécessite de détecter les modifications mineures et de rejouer le scénario) ce qui n’a pas l’air d’être du tout ta problématique.

Yarflam

Une petite base c’est-a-dire? Actuelement ce a quoi j’ai penser serais d’avoir une autre classe "AuditPlanning" en relation avec la classe "Planning" (Une relation OneToMany). Cela me permetra en base de donnée de pouvoir creer une nouvelle ligne a la table "AuditPlanning", à chaque fois que l’on fait une modification sur le planning deja creer lors de l’enregistrment j’insere directement ces modification dans AuditPlanning, avec un nouvelle id de la table elle meme mais toujours avec le meme id de la table "Planning". Cependant mon soucis es que vue que pour creer un planning on fait intervenir plein d(autre classe comment je fais pour obtenir toute les infos des autres classes? Dois-je tous les indiquer(tous les autres attribut) dans la table "AuditPlanning"?

D’accord, il s’agit donc bien d’un système de versions - plutôt basique.

Cependant mon soucis es que vue que pour creer un planning on fait intervenir plein d(autre classe comment je fais pour obtenir toute les infos des autres classes? Dois-je tous les indiquer(tous les autres attribut) dans la table "AuditPlanning"?

kko

Si tu crées un lien entre ta nouvelle table AuditPlanning et celle de Planning, ça ne me semble superflux de redonder les informations inchangées - les propriétés qui sont constantes ne méritent même pas de colonnes. Après tout dépend de ton MCD et de l’utilisation que t’en fais. On pourrait t’aider davantage avec un schéma de ta BDD (textuel ou graphique) et peut-être un cas ou deux d’utilisations. A distance comme ça, je n’en ai strictement aucune idée.

Bonjour, d’abord excusez mon silence je reviens d’une maladie, bref…

Pour être un peu plus précis, j’utilise hibernate et jpa ainsi que spring framework, (je sais c’est un peu vieux ça)!

Le truc est que je voudrais d’abord dupliquer mon entité "Planning" et la sauvegarder dans ma base de données dans une autre table '’PlanningAudit"

qui a les meme champs avec quelque champs en plus comme le numero de version . je joins ci dessous le diagramme de classe definnissant mon modele

Le truc est que je voudrais d’abord dupliquer mon entité "Planning" et la sauvegarder dans ma base de données dans une autre table '’PlanningAudit"(https://cdn.discordapp.com/attachments/670209727828852746/670210161264033792/ModelClass.png)

kko

Je ne comprends pas trop ton problème. Mettons que tu as un objet Calendrier lié à une ou plusieurs entrées de ta table, déjà tu les récupères toutes via ta classe DAO, puis tu en crées des nouvelles dans ta table PlanningAudit en y ajoutant la version.

Schématisons étape par étape :

(1) Je dois modifier le calendrier de Mr Alban.

(2) Le calendrier est représenté dans la table Planning par les ID : 6, 9, 21, 29.

(3) Je récupère via JPA les 4 entrées 6, 9, 21, 29 pour avoir un tableau d’objets.

(4) En itérant sur mes 4 entrées, je crée des nouveaux objets JPA pour ma table PlanningAudit comportant en plus une version.

(5) Je modifie le planning comme je le souhaite et met à jour la table Planning.

Y’a t-il une contrainte supplémentaire que tu n’aurais pas expliqué ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte