ORM : pas facile mais bénéfique
beaucoup d'échanges passionnés, je n'ai pas tout lu, désolé
je vais juste essayer de donner mon avis à la question initiale [ sondage: Êtes-vous pour l'utilisation d'un ORM (mapping objet-relationnel) ? Pourquoi ? Partagez vos avis ]
je suis développeur java coté "back-end" depuis plusieurs années et je suis vraiment satisfait d'utiliser JPA natif (Hibernate ou EclipseLink) ou Spring-Data JPA (Hibernate).
Pourquoi ?
Parce que cela facilite grandement la structuration et la clarté de mon code (...et le temps passé ! dans Spring on peut s'appuyer sur l'interface Repository pour la mise en place du pattern DAO, voire utiliser directement JpaRepositoryImplementation / SimpleJpaRepository https://www.baeldung.com/spring-data...epository-save => les méthodes pour un CRUD sont dispo en qques minutes).
Parce que je peux aussi très facilement ajouter des accès "custom" dès que le besoin s'en fait sentir : jointures, règles d'accès spécifiques, besoin de performance, ...
Je code ces accès custom le plus souvent en JPQL / HQL (et rarement en Criteriabuilder, faudra que je m'y penches davantage car l'update/delete est dispo depuis JPA 2.1 ...)
Lorsque je n'ai plus le choix avec la techno JPA, je code aussi en SQL natif naturellement (NB : je m'efforce d'eviter le SQL natif car j'ai eu plusieurs applis a migrer et ça continue... en ce moment mes clients délaissent les databases Oracle pour les petites et moyennes applications).
Je dois préciser qu'en phase de mise au point de mon code (et en phase d'optimisation des perfos lorsque necessaire) j'active systémétiquement l'affichage du SQL généré par JPA.
Au final, je dois comprendre et maitriser JPA, 2 langages (JPQL + SQL), la conversion (JPQL vers SQL), les particularités des implémentations de JPA (la config par ex.), etc...
Ce n'est donc pas vraiment facile. J'accepte cet effort car le bénéfice au niveau lisibilité (maintenabilité) du code de l'appli me parait considérable et essentiel.
Il m'est arrivé de tomber sur des applis java dont la couche de persistence était réalisée exclusivement en jdbc sans pattern DAO ni autre organisation du code... ben quelle galère ! la duplication de code, son volume, sa non standardisation => illisible et non-maintenable, c'est dans ces moments là que j'apprécie les ORM !