Mon application utilise de grands arbres d'objets de domaine et pour la plupart de ces objets je voudrais persister quelques informations de base (mises à jour, temps modifié, etc.). J'ai déjà ajouté ces propriétés & colonnes à mon application. J'étais sur le point de coder le réglage de ces valeurs dans tous les différents constructeurs, etc. quand il m'est apparu que la couche de persistance devrait gérer cela de façon transparente.Un moyen facile d'enregistrer les données d'audit de base sur les objets de domaine?
Mais comment?
Je pourrais certainement le faire à partir de mes DAO, mais comment gérer les objets qui sont persistés via une sauvegarde en cascade? Y at-il un moyen d'intercepter la méthode persist() sur ceux-ci?
Quelle est une bonne manière d'implémenter cette capacité?
bonté JPA pure. Merci pour le conseil et le lien concernant PrePersist et PreUpdate. Quant à l'idée de stocker toutes les informations d'audit dans un seul tableau, cela ressemble à un goulot d'étranglement potentiel de performance ... non? – HDave
Hmm, c'est une question intéressante; la réponse dépend de ce que vous stockez dans la table unique et à quelle fréquence est-il demandé. Si vous vous attendez à ce que les utilisateurs interrogent et consultent relativement beaucoup d'informations d'audit dans le cours normal des opérations, il est préférable d'auditer chaque entité séparément. Cependant, si la table d'audit est censée être plus ou moins une table uniquement SELECT, elle est moins nocive, car vous n'avez que des INSERT à vous soucier des performances. Je pense qu'un certain niveau de planification de la capacité est nécessaire pour anticiper le nombre d'entrées en production. –
Dans mon cas particulier, la plupart du temps il y aura beaucoup de mises à jour et d'interrogation de cette information, donc je vais continuer à le stocker dans le même enregistrement que l'entité. Cependant, j'ai quelques endroits où externaliser cette information serait une grande aide. – HDave