Hibernate ORM e Jakarta Persistence no Quarkus — configuração, cache, multitenancy e acesso a dados moderno.
Como quarkus.hibernate-orm.schema-management.strategy e sql-load-script diferem entre perfis dev e produção, e por que a produção deveria entregar o controle de schema a uma ferramenta de migração.
Como declarar unidades de persistência nomeadas apoiadas em datasources separados, direcionar classes de modelo a elas, e injetar ou estender cada unidade de forma independente via CDI.
Como o Quarkus autodetecta o dialeto do Hibernate a partir do seu datasource, e como fixar uma versão exata de banco de dados ou sobrescrever o dialeto explicitamente.
A extensão quarkus-hibernate-envers registra um histórico de mudanças completo por entidade via @Audited, entidades de revisão, e a API de consulta AuditReader.
Como @Cacheable, propriedades de memória/expiração por região, e o hint de query org.hibernate.cacheable trabalham juntos para habilitar os caches de segundo nível e de query do Hibernate no Quarkus.
TenantConnectionResolver permite que uma aplicação construa provedores de conexão JDBC por id de tenant em tempo de execução, em vez de depender de schemas ou datasources configurados estaticamente.
O Quarkus oferece três estratégias de multitenancy (SCHEMA, DATABASE, DISCRIMINATOR) selecionadas via quarkus.hibernate-orm.multitenant, cada uma trocando força de isolamento por simplicidade operacional.
O Flyway assume o versionamento de schema do Hibernate semeando sua primeira migração a partir do DDL gerado pelo Hibernate, e então passa a ser dono de toda migração daí em diante.
Beans CDI Interceptor e StatementInspector, registrados com @PersistenceUnitExtension, permitem observar ou reescrever eventos de ciclo de vida de entidade e statements SQL sem tocar entidades ou queries.
O Panache oferece entidades active-record e alternativas no estilo repository sobre o Hibernate ORM puro, com strings de query simplificadas, paginação e ordenação embutidas.
Como o Jakarta Data permite declarar interfaces de repositório como CrudRepository e obter implementações geradas em tempo de build, queries customizadas via @Query/@Find, e segurança no nível de método.
O processador hibernate-processor gera classes de metamodelo type-safe para que queries CriteriaBuilder referenciem atributos de entidade em tempo de compilação, em vez de por string.
Como o openapi-generator-gradle-plugin gera stubs de recurso JAX-RS para um servidor Quarkus usando generatorName=jaxrs-spec e library=quarkus, incluindo namespacing Jakarta EE, anotações MicroProfile OpenAPI, e assinaturas reativas tipadas com Mutiny.
O Quarkus REST lida com uploads multipart/form-data via @RestForm e FileUpload, desserializando partes mistas de texto/JSON/arquivo em uma única requisição, com limites de tamanho configuráveis e limpeza do diretório de upload.
O Dev Services inicia automaticamente infraestrutura apoiada em Testcontainers (Postgres, Kafka, Redis, e mais) sempre que uma extensão está presente, mas nenhuma conexão está configurada, incluindo scripts de inicialização privilegiados para coisas como CREATE EXTENSION.
O Hibernate Spatial mapeia tipos de geometria JTS (Point, LineString, Polygon) para colunas nativas PostGIS, para que rotas e áreas possam ser indexadas e consultadas espacialmente, em vez de serializadas como JSON ou varridas linha por linha.