Class HibernateOrmProcessor

java.lang.Object
io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor

public final class HibernateOrmProcessor extends Object
Simulacrum of JPA bootstrap.

This does not address the proper integration with Hibernate Rather prepare the path to providing the right metadata

Author:
Emmanuel Bernard emmanuel@hibernate.org, Sanne Grinovero invalid input: '<'sanne@hibernate.org>
  • Field Details

    • HIBERNATE_ORM_CONFIG_PREFIX

      public static final String HIBERNATE_ORM_CONFIG_PREFIX
      See Also:
    • HIBERNATE_REPOSITORY_ANNOTATIONS

      public static final Set<Class<?>> HIBERNATE_REPOSITORY_ANNOTATIONS
      Collection of Hibernate annotations for which, if detected on interface, Hibernate processor generates repository.
  • Constructor Details

    • HibernateOrmProcessor

      public HibernateOrmProcessor()
  • Method Details

    • registerServicesForReflection

      io.quarkus.deployment.builditem.NativeImageFeatureBuildItem registerServicesForReflection(io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem> services)
    • registerStrategyForReflection

      void registerStrategyForReflection(io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflective)
    • registerHibernateOrmMetadataForCoreDialects

      void registerHibernateOrmMetadataForCoreDialects(io.quarkus.deployment.annotations.BuildProducer<io.quarkus.hibernate.orm.deployment.spi.DatabaseKindDialectBuildItem> producer)
    • checkTransactionsSupport

      void checkTransactionsSupport(io.quarkus.deployment.Capabilities capabilities, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.arc.deployment.ValidationPhaseBuildItem.ValidationErrorBuildItem> validationErrors)
    • includeArchivesHostingEntityPackagesInIndex

      void includeArchivesHostingEntityPackagesInIndex(HibernateOrmConfig hibernateOrmConfig, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem> additionalApplicationArchiveMarkers)
    • warnOfSchemaProblems

      void warnOfSchemaProblems(io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, HibernateOrmConfig hibernateOrmBuildTimeConfig)
    • addPersistenceUnitAnnotationToIndex

      io.quarkus.deployment.builditem.AdditionalIndexedClassesBuildItem addPersistenceUnitAnnotationToIndex()
    • enrollBeanValidationTypeSafeActivatorForReflection

      public void enrollBeanValidationTypeSafeActivatorForReflection(io.quarkus.deployment.Capabilities capabilities, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflectiveClasses)
    • hotDeploymentWatchedFiles

      List<io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem> hotDeploymentWatchedFiles(HibernateOrmConfig config)
    • parsePersistenceXmlDescriptors

      public void parsePersistenceXmlDescriptors(HibernateOrmConfig config, io.quarkus.deployment.annotations.BuildProducer<PersistenceXmlDescriptorBuildItem> persistenceXmlDescriptorBuildItemBuildProducer)
    • defineTypeOfImpliedPU

      public ImpliedBlockingPersistenceUnitTypeBuildItem defineTypeOfImpliedPU(List<io.quarkus.agroal.spi.JdbcDataSourceBuildItem> jdbcDataSourcesBuildItem, io.quarkus.deployment.Capabilities capabilities)
    • allowJacksonModuleDiscovery

      public void allowJacksonModuleDiscovery(io.quarkus.deployment.Capabilities capabilities, List<PersistenceUnitDescriptorBuildItem> persistenceUnits, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem> serviceProviders)
    • configurationDescriptorBuilding

      public void configurationDescriptorBuilding(io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, HibernateOrmConfig hibernateOrmConfig, io.quarkus.deployment.builditem.CombinedIndexBuildItem index, ImpliedBlockingPersistenceUnitTypeBuildItem impliedPU, List<PersistenceXmlDescriptorBuildItem> persistenceXmlDescriptors, List<io.quarkus.agroal.spi.JdbcDataSourceBuildItem> jdbcDataSources, List<io.quarkus.reactive.datasource.spi.ReactiveDataSourceBuildItem> reactiveDataSources, io.quarkus.deployment.builditem.ApplicationArchivesBuildItem applicationArchivesBuildItem, io.quarkus.deployment.builditem.LaunchModeBuildItem launchMode, List<io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem> additionalJpaModelBuildItems, JpaModelBuildItem jpaModel, io.quarkus.deployment.Capabilities capabilities, List<io.quarkus.hibernate.orm.deployment.spi.SqlLoadScriptDefaultBuildItem> additionalSqlLoadScriptDefaults, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.SystemPropertyBuildItem> systemProperties, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem> nativeImageResources, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem> hotDeploymentWatchedFiles, io.quarkus.deployment.annotations.BuildProducer<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptors, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem> reflectiveMethods, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.arc.deployment.UnremovableBeanBuildItem> unremovableBeans, List<io.quarkus.hibernate.orm.deployment.spi.DatabaseKindDialectBuildItem> dbKindMetadataBuildItems)
    • jpaEntitiesIndexer

      public JpaModelIndexBuildItem jpaEntitiesIndexer(io.quarkus.deployment.builditem.CombinedIndexBuildItem index, List<io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem> additionalJpaModelBuildItems, List<AdditionalJpaModelBuildItem> deprecatedAdditionalJpaModelBuildItems)
    • contributePersistenceXmlToJpaModel

      public void contributePersistenceXmlToJpaModel(io.quarkus.deployment.annotations.BuildProducer<JpaModelPersistenceUnitContributionBuildItem> jpaModelPuContributions, List<PersistenceXmlDescriptorBuildItem> persistenceXmlDescriptors)
    • contributeQuarkusConfigToJpaModel

      public void contributeQuarkusConfigToJpaModel(io.quarkus.deployment.annotations.BuildProducer<JpaModelPersistenceUnitContributionBuildItem> jpaModelPuContributions, HibernateOrmConfig hibernateOrmConfig)
    • defineJpaEntities

      public void defineJpaEntities(JpaModelIndexBuildItem indexBuildItem, io.quarkus.deployment.annotations.BuildProducer<JpaModelBuildItem> domainObjectsProducer, List<IgnorableNonIndexedClasses> ignorableNonIndexedClassesBuildItems, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflectiveClass, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem> hotDeploymentWatchedFiles, List<JpaModelPersistenceUnitContributionBuildItem> jpaModelPuContributions) throws io.quarkus.builder.BuildException
      Throws:
      io.quarkus.builder.BuildException
    • pregenProxies

      public io.quarkus.deployment.builditem.BytecodeRecorderConstantDefinitionBuildItem pregenProxies(JpaModelBuildItem jpaModel, JpaModelIndexBuildItem indexBuildItem, io.quarkus.deployment.builditem.TransformedClassesBuildItem transformedClassesBuildItem, List<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptorBuildItems, List<io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem> additionalJpaModelBuildItems, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.GeneratedClassBuildItem> generatedClassBuildItemBuildProducer, io.quarkus.deployment.builditem.LiveReloadBuildItem liveReloadBuildItem, ExecutorService buildExecutor) throws ExecutionException, InterruptedException
      Throws:
      ExecutionException
      InterruptedException
    • preGenAnnotationProxies

      public void preGenAnnotationProxies(List<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptorBuildItems, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflective, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.NativeImageProxyDefinitionBuildItem> proxyDefinitions)
    • build

      public void build(io.quarkus.deployment.recording.RecorderContext recorderContext, io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, io.quarkus.deployment.Capabilities capabilities, JpaModelBuildItem jpaModel, HibernateOrmConfig hibernateOrmConfig, List<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptorBuildItems, List<HibernateOrmIntegrationStaticConfiguredBuildItem> integrationBuildItems, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.arc.deployment.BeanContainerListenerBuildItem> beanContainerListener, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.hibernate.validator.spi.BeanValidationTraversableResolverBuildItem> beanValidationTraversableResolver, io.quarkus.deployment.builditem.LaunchModeBuildItem launchMode) throws Exception
      Throws:
      Exception
    • handleNativeImageImportSql

      void handleNativeImageImportSql(io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem> resources, List<PersistenceUnitDescriptorBuildItem> descriptors)
    • enhancerDomainObjects

      public io.quarkus.panache.hibernate.common.deployment.HibernateEnhancersRegisteredBuildItem enhancerDomainObjects(JpaModelBuildItem jpaModel, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.BytecodeTransformerBuildItem> transformers, List<io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem> additionalJpaModelBuildItems, List<AdditionalJpaModelBuildItem> deprecatedAdditionalJpaModelBuildItems, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.GeneratedClassBuildItem> additionalClasses)
    • candidatesForFieldAccess

      public io.quarkus.panache.hibernate.common.deployment.HibernateModelClassCandidatesForFieldAccessBuildItem candidatesForFieldAccess(JpaModelBuildItem jpaModel)
    • build

      public void build(io.quarkus.deployment.annotations.BuildProducer<JpaModelPersistenceUnitMappingBuildItem> jpaModelPersistenceUnitMapping, List<PersistenceUnitDescriptorBuildItem> descriptors) throws Exception
      Throws:
      Exception
    • setupPersistenceProvider

      public PersistenceProviderSetUpBuildItem setupPersistenceProvider(io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, io.quarkus.deployment.Capabilities capabilities, List<HibernateOrmIntegrationRuntimeConfiguredBuildItem> integrationBuildItems)
    • startPersistenceUnits

      public io.quarkus.deployment.builditem.ServiceStartBuildItem startPersistenceUnits(io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, io.quarkus.arc.deployment.BeanContainerBuildItem beanContainer, List<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptors, io.quarkus.deployment.builditem.ShutdownContextBuildItem shutdownContextBuildItem)
    • multitenancy

      public void multitenancy(io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder recorder, List<PersistenceUnitDescriptorBuildItem> persistenceUnitDescriptors, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.arc.deployment.SyntheticBeanBuildItem> syntheticBeans, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.arc.deployment.UnremovableBeanBuildItem> unremovableBeans)
    • produceLoggingCategories

      public void produceLoggingCategories(HibernateOrmConfig hibernateOrmConfig, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.LogCategoryBuildItem> categories)
    • registerStaticMetamodelClassesForReflection

      public void registerStaticMetamodelClassesForReflection(io.quarkus.deployment.builditem.CombinedIndexBuildItem index, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflective)
    • registerInjectServiceMethodsForReflection

      public void registerInjectServiceMethodsForReflection(io.quarkus.deployment.builditem.CombinedIndexBuildItem index, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem> reflective)
    • registerJakartaDataRepositorySecurityAnnotations

      void registerJakartaDataRepositorySecurityAnnotations(io.quarkus.deployment.Capabilities capabilities, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.security.spi.SecuredInterfaceAnnotationBuildItem> securedInterfaceAnnotationProducer)
    • generateMissingPackageInfos

      void generateMissingPackageInfos(io.quarkus.deployment.builditem.CombinedIndexBuildItem combinedIndex, JpaModelBuildItem jpaModel, List<io.quarkus.deployment.builditem.ApplicationClassPredicateBuildItem> predicates, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.GeneratedClassBuildItem> generatedClasses, io.quarkus.deployment.annotations.BuildProducer<io.quarkus.deployment.builditem.GeneratedResourceBuildItem> generatedResources)
      Hibernate ORM checks package-info and if we have a negative lookup, it's not cached by AOT class loading.

      So point of this method is to generate an empty package-info in packages where we have a mapped class, if there isn't a package-info already.

    • getModelPerPersistenceUnit

      public static Map<String,JpaPersistenceUnitModel> getModelPerPersistenceUnit(HibernateOrmConfig hibernateOrmConfig, List<io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem> additionalJpaModelBuildItems, JpaModelBuildItem jpaModel, org.jboss.jandex.IndexView index, boolean enableDefaultPersistenceUnit)
    • buildQuarkusScanner

      public static io.quarkus.hibernate.orm.runtime.boot.scan.QuarkusScanner buildQuarkusScanner(JpaModelBuildItem jpaModel)
      Set up the scanner, as this scanning has already been done we need to just tell it about the classes we have discovered. This scanner is bytecode serializable and is passed directly into the recorder
      Parameters:
      jpaModel - the previously discovered JPA model (domain objects, ...)
      Returns:
      a new QuarkusScanner with all domainObjects registered