Mansart est la couche persistance de l’écosystème Vidocq. Elle implémente Jakarta Data 1.0 (repositories déclaratifs) et Jakarta Persistence 3.2 (JPA), aux côtés d’un gestionnaire de transactions Jakarta Transactions 2.0 et d’un pool de connexions JDBC virtual-thread-natif. Quatre briques découplées, une seule SPI dialecte SQL, génération statique APT + Class-File API — pas de réflexion à chaud, pas de proxy dynamique.

Origine du nom

Jules Hardouin-Mansart (1646-1708), Premier architecte du Roi sous Louis XIV. On lui doit la galerie des Glaces de Versailles, le dôme des Invalides, la place Vendôme, le Grand Trianon. Il dirigeait l’Académie royale d’architecture, codifiait les ordres, négociait avec maçons et sculpteurs. L’œuvre tient debout depuis trois siècles parce que chaque pièce a été conçue pour s’imbriquer dans la suivante, et parce qu’on ne confondait pas le décor avec la structure.

Mansart, la couche persistance, applique le même découpage : la base d’un système d’information ne se voit pas, mais elle porte tout le reste. Voir la fiche Wikipédia.

En un coup d’œil

Specs implémentées

Jakarta Data 1.0 + Jakarta Persistence 3.2 (M7 en attente) + Jakarta Transactions 2.0

Repo

codeberg.org/Vidocq/mansart

Java

25 (LTS)

Modules JPMS

io.vidocq.mansart.data, io.vidocq.mansart.pool, io.vidocq.mansart.transactions, io.vidocq.mansart.persistence

Dépendances runtime

Specs Jakarta uniquement (jakarta.data-api, jakarta.persistence-api, jakarta.transaction-api, jakarta.inject-api, jakarta.cdi-api). JDBC dans le JDK. Drivers en provided.

Threading

Virtual Threads partout — pas de pool plateforme, propagation transactionnelle via ScopedValue.

Codegen

APT (métamodèle, *RepositoryImpl) + Class-File API (proxy Connection). Zéro réflexion à l’usage, zéro ASM/Byte Buddy.

TCK

✅ Jakarta Data 1.0 73/73 (M7) — voir état détaillé. Jakarta Transactions 2.0 — smoke 5/5 ; suite complète en M6c.

Sous-modules

Mansart se décompose en quatre sous-projets indépendants en runtime, organisés en couches :

Sous-module Rôle Page dédiée

mansart-pool

Pool JDBC virtual-thread-natif, zéro-dep, alternative à HikariCP.

mansart-pool

mansart-transactions

Gestionnaire de transactions Jakarta Transactions 2.0 (TransactionManager, UserTransaction, @Transactional).

mansart-transactions

mansart-jakarta-data

Implémentation Jakarta Data 1.0 — repositories, query methods, JDQL, dialectes JDBC (H2, PostgreSQL).

mansart-jakarta-data

mansart-persistence (M7 en attente)

Implémentation Jakarta Persistence 3.2 (JPA classique). En conception — mansart-jakarta-data couvre déjà les besoins courants dans Vidocq.

mansart-persistence

Architecture en couches

Diagram

Chaque couche s’utilise indépendamment : mansart-pool est un DataSource autonome, mansart-transactions ne connaît pas Jakarta Data, et mansart-jakarta-data peut tourner sans pool Mansart si l’application apporte le sien.

Positionnement dans l’écosystème

flowchart LR
    VIDOCQ[xref:vidocq::index.adoc[Vidocq Runtime]] --> MANSART[Mansart]
    VAUBAN[xref:vauban::index.adoc[Vauban CDI]] -.@Repository.-> MANSART
    VAUBAN -.@Transactional.-> MANSART
    MANSART --> JDK[Java 25 JDBC]

Vauban fournit le bootstrap CDI (BCE) qui découvre les @Repository et les transforme en beans @ApplicationScoped, et l’intercepteur @Transactional. Vidocq Runtime orchestre le packaging et le démarrage.