Nous avons une application Web à base de printemps qui utilise Hibernate pour charger / stocker ses entités vers la base de données sous-jacente. P>
Comme il s'agit d'une application backend, nous voulons non seulement permettre à notre interface utilisateur, mais également des outils tiers pour initier manuellement les transactions DB. C'est pourquoi les appelants doivent p>
startTransaction code> méthode et en retour, obtenez un identifiant qu'ils peuvent faire référence à li>
- Tous les appels pertinents DB (e. g. Création, modification, la suppression) en faisant référence à cet ID pour préciser les opérations appartenant à la transaction démarrée LI>
- appelez la méthode
commitTransaction code> pour signaler à notre backend que la transaction peut être commise maintenant (ou dans le cas négatif rollbacktransaction code> sera appelé) li>
ol>
Alors gardez à l'esprit que toutes les manipulations de la base de données seront effectuées en interne par les annotations de la persistance Java, comment pouvons-nous ouvrir la gestion des transactions à notre interface utilisateur qui se comporte comme une application tierce qui n'a aucun accès direct aux entités ballentives mais offres avec des objets de transfert de données uniquement? p>
3 Réponses :
Pourquoi ne construisez-vous pas des services autour de votre "application arrière" par exemple une interface SOAP ou une interface de repos. P>
Avec cette stratégie, vous pouvez gérer votre transaction dans le backend p>
Peut-être que je n'ai pas suffisamment effacé ma question: le Keypoint n'est pas quelle interface à fournir mais comment avoir hibernate m'offrir une possibilité de démarrage et de fin de manière manuelle. D'habitude, tout cela se fait via des annotations et de la configuration, mais nos outils 3ème partie et l'interface utilisateur n'ont pas accès à ces entités annotées. Au lieu de cela, ils passent DTO (objets de transfert de données uniquement).
Je pense que cela peut être fait, mais serait une douleur royale à mettre en œuvre / vérifier. Vous devez essentiellement besoin d'un gestionnaire de transactions qui n'est pas délimité par une définition «transaction par thread-transaction», mais s'étend sur plusieurs invocations pour le même client. P>
Les haricots de session en JTA + pourraient être quelque chose que vous voudriez jeter un coup d'œil à. P>
Vous êtes bien sûr le bienvenu. BTW, cette communauté serait intéressée par l'approche que vous allez prendre si vous parvenez à retirer cela, il serait donc agréable que vous puissiez mettre à jour votre poste original ou votre commentaire sur ce poste une fois que vous avez terminé avec votre implémentation. Bonne chance. :)