De nombreuses applications Java/JEE utilisent les bases de données notamment pour stocker leurs propres datas. Et pour ce faire, beaucoup d’entre elles utilisent ce qu’on appelle les transactions.
Débloque les + belles offres tech en 10 mins
Celles-ci permettent d’assurer une certaine cohérence de ce qui est sauvegardé en base, en appliquant les principes suivants :
On désigne sous l’acronyme ACID ces principes.
En plus des caractéristiques énoncées ci-dessus, les transactions fonctionnent sur le principe de l’exclusion mutuelle qu’on retrouve dans les contextes multithread. C’est ainsi qu’au cours d’une transaction, des lignes de certaines tables voire des tables entières peuvent être verrouillées, et si vous en abusez cela va créer de nombreuses contentions au sein de votre application voire des deadlocks.
Par conséquent, il convient d’utiliser les transactions uniquement pour des opérations en écriture, et pas pour des opérations de lecture seule. Vous pouvez tout à fait avoir besoin dans le cadre d’une transaction de lire des informations en base, mais si vous ne faites que lire, ne les utilisez pas, sous peine de voir les performances de votre application s’effondrer.
L’API de gestion transactionnelle en Java/JEE est JTA. Cette dernière est dans les faits assez difficile à maîtriser, aussi les frameworks les plus courants tels que Spring ou les EJB l’implémentent par l’intermédiaire de l’AOP. Aussi globalement vous n’aurez pas à vous en occuper directement. En fait vous ne le ferez que par annotation. Voici le lien pour Spring et celui pour les EJB.
Les différentes annotations possibles pour les méthodes sont les suivantes :
La base de données celle-ci doit être également configurée pour gérer les transactions d’une manière plus ou moins rigoureuse. Et là encore la configuration plus ou moins laxiste aura un impact direct sur les performances. Cela dit le sujet dépasse cet article aussi pour les plus motivés vous pouvez aller voir là ou encore sur l’ouvrage Enterprise Javabeans 3.1 de chez O’reilly, dans le chapitre sur les transactions.
Débloque les + belles offres tech en 10 mins
Cet article vous a plu ? Vous aimerez sûrement aussi :
Julien
Moi c’est Julien, ingénieur en informatique avec quelques années d’expérience. Je suis tombé dans la marmite étant petit, mon père avait acheté un Apple – avant même ma naissance (oui ça date !). Et maintenant je me passionne essentiellement pour tout ce qui est du monde Java et du système, les OS open source en particulier.
Au quotidien, je suis devops, bref je fais du dév, je discute avec les opérationnels, et je fais du conseil auprès des clients.
Les maladies inflammatoires chroniques de l’intestin ou "MICI" sont invisibles, mais leurs impacts sur la…
Depuis l'été, j'ai un Pixel qui intègre à la fois un TPU (Tensor Processing Unit)…
On se retrouve dans un nouvel article avec toutes les infos sur cette nouvelle saison…
Pourquoi l’inclusion numérique est essentielle : le point avec Mathieu Froidure. Dans un monde de…
Elles sont passées où les femmes dans la tech ? Entre le manque de représentation…
View Comments
Un grand merci pour votre excellent article