Salut,

Pas sûre que ce soit vraiment le bon endroit pour parler de çà mais bon.
Voilà je débarque dans une structure et je suis en charge de la reprise d'une application. Je parcours le code, trace les requêtes avec la base, fait du reverse avec JPA pour obtenir les graphes d'objet, etc...
Les clés des objets en base sont gérés par des séquences. Cependant je constate des trous. me dit que c'est certainement dû à des suppressions. Et en fait non car la suppression est seulement logique (passage d'un booléen à true au sens objet bien sûre).
En cresant je trouve la raison et c'est la que cela devient à mon sens tordu.
Lors de la création d'un objet tout est déroulé pour créer les enregistrements correspondant en base, cependant le check des contraintes fonctionnelles n'est fait que après l'insertion en base juste avant le commit. Si les contraintes fonctionnelles ne sont pas respectés (contrôlés par requêtage), alors on fait un roolback. cependant les numéros de séquence auront été augmentés entre temps. La personne en charge du développement jusque présent me certifie que c'est bien la meilleur manière de programmer....

Après cette présentation je pense complète voici les questions :
1. après quelques années de développements (java principalement) c'est la première fois que je vois un fonctionnement pareil. Pour moi il faut contrôler la cohérence fonctionnelle avant de faire les inserts dans la base, qu'en pensez-vous ?

2. Contrôler la cohérence fonctionnelle par requête n'est pas très logique pour moi, même si dans le cas présent on recherche dans la base si tel ou tel couple d'informations n'a pas déjà été créer, qu'en pensez-vous ?

Merci par avance de vos réponses,