Mansart cible le standard (Jakarta Data 1.0 + Jakarta Persistence 3.2), pas les extensions propriétaires. La migration depuis Spring Data est triviale — la spec Jakarta Data a explicitement repris les conventions Spring Data. Hibernate / EclipseLink demande plus de travail si l’application utilise des features hors spec (custom dialects, listeners, événements).
Depuis Spring Data JPA
| Spring Data | Mansart Jakarta Data | Note |
|---|---|---|
|
|
API standardisée — signatures très proches. |
|
|
Sémantique différente : Jakarta Data scope = bean repository, pas exception translator. |
Méthodes dérivées ( |
Identiques |
Convention reprise par Jakarta Data. |
|
|
JDQL plus simple que JPQL — le SELECT initial est implicite. |
|
|
Sémantique identique. |
|
|
Six TxType standards. Pas de support de |
|
|
Pas de |
|
Migrer depuis Spring Data est le chemin le plus court. Les noms de méthodes dérivés et les |
Depuis Hibernate ORM 6/7
| Hibernate | Mansart | Note |
|---|---|---|
|
|
Pour le besoin courant, basculer sur |
HQL |
JPQL (M7) ou JDQL (livré) |
Mansart cible la spec, pas les extensions HQL propriétaires. |
|
Identiques |
Annotations JPA standard reconnues telles quelles. |
|
Hors scope v1 |
Reportés à |
Hibernate Reactive |
|
JDBC bloquant sous Loom — pas de Vert.x, pas de callback. |
Listeners JPA ( |
Hors scope v1 |
Couvert par M7. |
Critère / Criteria API |
Hors scope v1 |
Couvert par M7. |
Schema generation ( |
Externe (Flyway / Liquibase recommandés) |
Mansart ne gère pas les migrations DDL. |
Depuis EclipseLink / OpenJPA
Cas d’usage moins fréquent, transposition similaire à Hibernate. Les annotations standard JPA 3.2 sont reconnues telles quelles ; les extensions propriétaires (@CustomConverter, @Cache(…)) doivent être réécrites en équivalents standard ou différées à mansart-persistence (M7).
Depuis HikariCP (pool)
| HikariCP | mansart-pool | Note |
|---|---|---|
|
|
Implémente |
|
|
API similaire — |
|
|
Idem. |
|
|
Idem. |
|
|
Idem. |
|
|
Idem. |
|
|
Idem. |
|
|
Mansart privilégie |
Métriques Micrometer / Prometheus |
|
Bridge Micrometer dans le backlog |
Comparatif perf : voir lien:https://codeberg.org/Vidocq/mansart/src/branch/main/mansart-pool/BENCH.md[mansart-pool BENCH.md]. Mansart-pool est natif virtual threads et n’a pas le coût de pinning sous charge Loom.
Pièges connus
-
Pas de proxy d’entité — Mansart matérialise les entités directement. Le lazy loading n’est pas magique :
@ManyToOne(fetch=LAZY)charge l’attribut au prochain accès via un getter intercepté par le bytecode généré APT (M5). -
Pas d’auto-flush implicite — l’utilisateur appelle explicitement
flush()ou termine la transaction. Différent de Hibernate qui flush au query. -
Pas de scan d’entités runtime — l’APT enregistre les entités à la compilation. Ajouter une
@Entitysans recompiler est une erreur classique en migration depuis Hibernate. -
@OneToManynon supporté en v1 — modéliser explicitement via la@ManyToOnepropriétaire et unfindByOwner(…)dans le repository de la cible.