[Aller au contenu](#main-content)

PREVIEW

[](/fr "Page d'accueil BearStudio")

[Prestations](/fr/prestations)[Équipe](/fr/equipe)[Blog](/fr/blog)

[Nous contacter](/fr/contact)Français

<!--astro:end-->

[Accueil](/fr)[Prestations](/fr/prestations)[Équipe](/fr/equipe)[Blog](/fr/blog)

<!--astro:end-->

<!-- Mobile Top Actions -->

Français

<!--astro:end-->

[Nous contacter](/fr/contact)

<!-- Content -->

[](/fr)

1. [Accueil](/fr)
2.
3. [Blog](/fr/blog)
4.
5. Brève 11 - Versionner une entité avec JPA

# Brève 11 - Versionner une entité avec JPA

Le 14 mars 2022

par [Hugo Pérard](/fr/equipe/hugo-perard)

<!-- Background (translate3d is for safari to apply mix-blend-overlay) -->

![](/_astro/visuel-breve-min-2.DamyedMA_2sr3I3.webp)

Il y a quelques semaines sur un projet [Spring Boot](https://spring.io/projects/spring-boot), j’ai eu besoin qu’une de mes entités soit versionnée pour éviter tout problème de mises à jour concurrentielles. J’ai alors découvert l’annotation `@Version` de JPA. Je profite de cette découverte pour vous la partager car elle pourrait bien vous être utile.

## Le besoin :

Sur un projet **Spring Boot** donc, utilisant une base de données relationnelle (**[PostgreSQL](https://www.postgresql.org/)** par exemple), vous stockez du **contenu non formaté** (du **JSON** par exemple). À partir du moment où il y a stockage d’un contenu non formaté, il est possible que vous ayez des problèmes de versionning du contenu.

## Le versioning :

Le versioning est le fait de créer une copie d’un contenu à un instant T. Ces copies, non-éditables, ainsi que le fichier courant vont former une liste, qui définit les différentes versions de votre contenu.

Une version est souvent décrite de la forme `VersionMajeure.versionMineure.`

## @Version :

La simple annotation `@Version` vous permettra donc de versionner automatiquement un champ d’une entité.

Mais comment est-ce qu’elle fonctionne ? Le champ annoté `@Version` sera incrémenté et une condition va être ajoutée à votre demande de mise à jour afin de vérifier que l’entité n’ait pas été mise à jour parallèlement à votre demande.

`VERSION = VERSION + 1 WHERE ((ID = ?) AND (VERSION = ?))`

Revenons-en au besoin initial, en ajoutant l’annotation `@Version` sur le champ de votre contenu non formaté, lorsque que vous ferez une mise à jour de votre entité, la vérification ci-dessus sera effectuée. Dans le cas où votre champ a été modifié parallèlement, une `OptimisticLockException` sera lancée. Sinon le numéro de version de votre champ sera incrémenté et votre entité sera bien à jour. 

Découvrez aussi l’annotation `@MockBean` dans une [autre brève](/fr/blog/articles/breve-9-mock-ou-mockbean) sur la thématique du [développement back](/fr/prestations/developpement-web).

Publié le 14 mars 2022

par [Hugo Pérard](/fr/equipe/hugo-perard)

[](/fr)

1900 Route de Cailly\
76690 Saint-André-sur-Cailly\
Normandie, FRANCE

[Accueil ](/fr)[Prestations ](/fr/prestations)[UX/UI Design ](/fr/prestations/ux-design)[Développement Web ](/fr/prestations/developpement-web)[Développement Mobile ](/fr/prestations/developpement-mobile)[Boost Projet ](/fr/prestations/boost-projet)[Accompagnement CTO ](/fr/prestations/accompagnement-cto)[Intelligence Artificielle ](/fr/prestations/intelligence-artificielle)[Équipe ](/fr/equipe)[Blog ](/fr/blog)[Candidater ](/fr/contact/processus-candidature-bearstudio)[Branding ](/fr/branding)[Mentions légales](/fr/mentions-legales)

Suivez nous sur...

[ Linkedin ](https://www.linkedin.com/company/bearstudio/ "Linkedin")[ X (twitter) ](https://twitter.com/_BearStudio "X (twitter)")[ Facebook ](https://www.facebook.com/allyouneedisbear "Facebook")[ YouTube ](https://www.youtube.com/channel/UC-2hpnhKgU2C_OFucjEN0IA "YouTube")[ Instagram ](https://www.instagram.com/_bearstudio/ "Instagram")[ GitHub ](https://github.com/BearStudio "GitHub")[ Twitch](https://www.twitch.tv/bearstudiolive "Twitch")

Le BearStudio est supporté par la

![Region Normandie](/_astro/logo-region.BxVRy695_Z1lruBA.svg)

Créé en 2016, le BearStudio est un studio d'accompagnement de projets en R\&D : développement sur-mesure Web et mobile, études de faisabilité et audit technologique, rien ne nous effraie !

© Tous droits réservés
