CarmaBlog

Agilité, Développement Java, Nouvelles technologies et plus…
  • rss
  • Accueil
  • Management
  • Programmation agile
  • Technologie
  • Linux
  • Evénement
  • App Android
  • Contact
  • A propos de l'auteur
  • English
  • Francais

Gérer une séquence de base de données avec Spring

Fabian Piau | dimanche 22 septembre 2013 - 20:36
  • Imprimer
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 English version available

Remarque
Il vaut mieux laisser Hibernate gérer tout seul les identifiants techniques (clés primaires). Par contre, il peut arriver que vous ayez besoin de générer un identifiant fonctionnel et qu’un générateur Hibernate ne réponde pas à vos besoins. Dans mon cas, l’identifiant fonctionnel n’était pas tout le temps généré, il pouvait aussi être setté à la main. Malheureusement, au moment d’insérer l’élément en base de données (sauf erreur, mais je n’ai pas trouvé…), le générateur écrase toujours la valeur de mon identifiant fonctionnel même si je l’ai settée manuellement auparavant.

Base de données

Un petit mémo (très technique) utile si vous avez Spring sur votre projet.

C’est dans le cas assez spécifique où l’on souhaite récupérer / incrémenter la valeur d’une séquence et que le Sequence Generator d’Hibernate ne répond pas à vos besoins (voir la remarque).

Plutôt que de passer par une DAO avec du code Hibernate (ou pire JDBC), Spring peut le faire pour vous en 2 minutes…


  • Pour cela, il suffit de déclarer un nouveau bean dans la configuration Spring de votre projet:
           <bean id='mySequenceIncrementer' class='org.springframework.jdbc.support.incrementer.H2SequenceMaxValueIncrementer'>
    	       <property name='dataSource' ref='<Nom de votre datasource>' />
    	       <property name='incrementerName' value='<Nom de votre sequence>' />
           </bean>
    

    A noter: il existe plusieurs implémentations d’incrémenteur pour différentes bases de données (j’utilise H2DB, mais MySQL, PostgreSQL, Oracle, etc. sont également disponibles)

  • Injecter ce bean dans la classe de votre choix.
  • Et désormais, vous pouvez faire:
    final Long newIdSequence = mySequenceIncrementer.nextLongValue();
    


Testé et approuvé!

Articles similaires

Java EE vs SpringJava EE & CDI vs. Spring springQCon London 2016 – Spring Framework 5 – Preview et Roadmap Maven sitePlus loin avec le Maven Site
Commentaires
5 Commentaires »
Catégories
Programmation agile
Tags
base de données, hibernate, séquence, spring
Flux rss des commentaires Flux rss des commentaires
Page 1 sur 11
Télécharger l'app CarmaBlog

Flux RSS

  • RSS Feed RSS - Articles
  • RSS Feed RSS - Commentaires

Articles les plus vus

  • Changer la langue de Firefox - 114 632 vues
  • Réaliser un sondage en ligne avec Google Forms / Drive / Docs - 60 884 vues
  • FAQ – Sondage en ligne avec Google Forms / Drive / Docs - 32 585 vues
  • Personnaliser Gnome 3 (Shell) - 28 625 vues
  • La signification d’URL, URI et URN - 15 154 vues
  • Java EE & CDI vs. Spring - 14 532 vues
  • Open Street Map, une meilleure carte que Google Maps? - 13 412 vues
  • Comparaison NoSQL: Couchbase et MongoDB - 13 323 vues
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 12 597 vues
  • Une première approche du Camel d’Apache - 11 404 vues

Commentaires récents

  • Avatar UtilisateurLila Conseils Bonsoir Fabian, merci beaucoup, vous venez de me sauver la... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 2 semaines
  • Avatar UtilisateurFabian Piau Je ne suis pas sûr à 100%, il est possible... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 2 semaines
  • Avatar UtilisateurLila Conseils Bonjour, J'ai créé un formulaire et je me suis rendue... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 2 semaines
  • Avatar Utilisateurcyril de falvard Je regarderais ça merci. – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 3 semaines
  • Avatar UtilisateurFabian Piau Regardez la section "Comment peut-on empêcher une personne de répondre... – FAQ - Sondage en ligne avec Google Forms / Drive / Docs – Il y a 1 mois et 3 semaines

Articles récents

  • CoderDojo Expedia à Londres - Il y a 4 mois et 2 semaines
  • Etre bénévole à Devoxx4Kids - Il y a 7 mois et 23 heures
  • Une migration Java 11 réussie - Il y a 11 mois et 1 semaine
  • Conseils pour sécuriser votre site WordPress - Il y a 1 an et 1 mois
  • Devoxx UK 2018 – Jour 2 - Il y a 1 an et 6 mois
  • Devoxx UK 2018 – Jour 1 - Il y a 1 an et 6 mois
  • TransferWise, Revolut and Monzo, a small revolution for travelers and expats - Il y a 1 an et 10 mois
  • Autocomplétion pour Git - Il y a 2 ans et 6 mois
  • Swagger, la documentation API automatisée - Il y a 2 ans et 9 mois
  • Architecture Microservices – Les bonnes pratiques - Il y a 3 ans et 2 mois
  • FAQ – Sondage en ligne avec Google Forms / Drive / Docs - Il y a 3 ans et 7 mois
  • QCon London 2016 – Projet Jigsaw dans JDK 9 – La modularité arrive sur Java - Il y a 3 ans et 7 mois
  • QCon London 2016 – Spring Framework 5 – Preview et Roadmap - Il y a 3 ans et 8 mois
  • Les meilleurs outils gratuits pour tester et optimiser une application ou un site web - Il y a 4 ans et 2 semaines
  • Faut-il se méfier de Google? - Il y a 4 ans et 6 mois
Offre moi un café

Langue

  • Français
  • English

Suivez-moi!

Suivez-moi sur Linkedin
Suivez-moi sur Twitter
Suivez-moi sur Stackoverflow
Suivez-moi sur Github
Suivez-moi sur Rss
Link to my Contact

Abonnement email

Saisissez votre adresse email pour être informé des nouveaux articles.

Étiquettes

.net agile agilité android bash blog bonnes pratiques cache cloud conférence css devoxx docs drive développeur eclipse extreme programming firefox forms google hibernate informatique intégration continue java jug londres microservices microsoft mobilité informatique métier outil panorama partage performance plugin programmeur qcon script société spring tdd test ubuntu windows wordpress

Liens

  • Blog Ippon Technologies
  • Blog Xebia France
  • Blog Zenika
  • Classpert
  • CommitStrip
  • Coursera
  • Developpef
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • new Blog( perso );
  • OCTO talks !
  • The Coder's Breakfast

Catégories

  • Evénement (15)
  • Linux (3)
  • Management (7)
  • Programmation agile (26)
  • Technologie (44)

Archives

  • juillet 2019 (1)
  • mai 2019 (1)
  • décembre 2018 (1)
  • octobre 2018 (1)
  • juin 2018 (1)
  • mai 2018 (1)
  • janvier 2018 (1)
  • mai 2017 (1)
  • mars 2017 (1)
  • octobre 2016 (1)
  • avril 2016 (2)
  • mars 2016 (1)
  • novembre 2015 (1)
  • mai 2015 (1)
  • février 2015 (1)
  • décembre 2014 (1)
  • novembre 2014 (1)
  • septembre 2014 (2)
  • août 2014 (1)
  • juillet 2014 (2)
  • juin 2014 (1)
  • avril 2014 (1)
  • mars 2014 (1)
  • février 2014 (2)
  • janvier 2014 (1)
  • décembre 2013 (1)
  • novembre 2013 (1)
  • octobre 2013 (3)
  • septembre 2013 (5)
  • juillet 2013 (1)
  • juin 2013 (1)
  • mai 2013 (1)
  • avril 2013 (1)
  • mars 2013 (2)
  • février 2013 (1)
  • janvier 2013 (2)
  • décembre 2012 (2)
  • octobre 2012 (1)
  • septembre 2012 (1)
  • juillet 2012 (1)
  • mai 2012 (1)
  • avril 2012 (1)
  • mars 2012 (1)
  • février 2012 (1)
  • janvier 2012 (2)
  • décembre 2011 (1)
  • novembre 2011 (2)
  • octobre 2011 (2)
  • septembre 2011 (1)
  • juillet 2011 (1)
  • juin 2011 (2)
  • avril 2011 (1)
  • mars 2011 (1)
  • février 2011 (1)
  • janvier 2011 (2)
  • novembre 2010 (2)
  • septembre 2010 (1)
  • août 2010 (1)
  • juillet 2010 (1)
  • juin 2010 (1)
  • mai 2010 (1)
  • avril 2010 (1)
  • mars 2010 (1)
  • février 2010 (1)
  • décembre 2009 (1)
  • novembre 2009 (1)
  • octobre 2009 (2)
  • septembre 2009 (2)
  • août 2009 (3)
  • juillet 2009 (1)
  • juin 2009 (2)
Suivez-moi sur Twitter
Suivez-moi sur Linkedin
Suivez-moi sur Stackoverflow
Suivez-moi sur Rss
Link to my Contact
Suivez-moi sur Github
 
Fabian Piau | Copyright © 2009 - 2019
Tous droits réservés | Haut ↑