├── .editorconfig
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yaml
│ ├── config.yml
│ ├── new_feature.yaml
│ └── other.yaml
├── release.yml
├── renovate.json
└── workflows
│ ├── central-sync.yml
│ ├── graalvm-dev.yml
│ ├── graalvm-latest.yml
│ ├── gradle.yml
│ ├── publish-snapshot.yml
│ └── release.yml
├── .gitignore
├── ISSUE_TEMPLATE.md
├── LICENSE
├── MAINTAINING.md
├── README.md
├── SECURITY.md
├── build.gradle
├── buildSrc
├── build.gradle
├── settings.gradle
└── src
│ └── main
│ └── groovy
│ ├── io.micronaut.build.internal.sql-base.gradle
│ ├── io.micronaut.build.internal.sql-module.gradle
│ ├── io.micronaut.build.internal.test-application-hibernate6.gradle
│ ├── io.micronaut.build.internal.test-application.gradle
│ ├── io.micronaut.build.internal.test-library.gradle
│ └── io.micronaut.build.internal.testing-base.gradle
├── config
├── HEADER
├── accepted-api-changes.json
├── checkstyle
│ ├── checkstyle.xml
│ └── suppressions.xml
└── spotless.license.java
├── gradle.properties
├── gradle
├── libs.versions.toml
├── license.gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── hibernate-jpa
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── hibernate
│ │ │ └── jpa
│ │ │ ├── HibernateCurrentSessionContextClassProvider.java
│ │ │ ├── JpaConfiguration.java
│ │ │ ├── TransactionalSession.java
│ │ │ ├── TransactionalSessionAdvice.java
│ │ │ ├── TransactionalSessionInterceptor.java
│ │ │ ├── conf
│ │ │ ├── AbstractHibernateFactory.java
│ │ │ ├── SessionFactoryPerDataSourceFactory.java
│ │ │ ├── SessionFactoryPerJpaConfigurationFactory.java
│ │ │ ├── serviceregistry
│ │ │ │ └── builder
│ │ │ │ │ ├── configures
│ │ │ │ │ ├── StandardServiceRegistryBuilderConfigurer.java
│ │ │ │ │ └── internal
│ │ │ │ │ │ ├── CompileProxyConfigurer.java
│ │ │ │ │ │ └── SettingsConfigurer.java
│ │ │ │ │ └── supplier
│ │ │ │ │ ├── StandardServiceRegistryBuilderCreator.java
│ │ │ │ │ └── internal
│ │ │ │ │ └── DefaultStandardServiceRegistryBuilderCreatorCreator.java
│ │ │ ├── sessionfactory
│ │ │ │ └── configure
│ │ │ │ │ ├── SessionFactoryBuilderConfigurer.java
│ │ │ │ │ └── internal
│ │ │ │ │ ├── InterceptorConfigurer.java
│ │ │ │ │ └── ValidatorFactoryConfigurer.java
│ │ │ └── settings
│ │ │ │ ├── SettingsSupplier.java
│ │ │ │ └── internal
│ │ │ │ ├── CurrentSessionContextClassSettingSupplier.java
│ │ │ │ ├── DataSourceSettingSupplier.java
│ │ │ │ ├── JCacheManagerSettingSupplier.java
│ │ │ │ ├── MicronautContainerSettingsSupplier.java
│ │ │ │ └── ValidatorFactorySettingSupplier.java
│ │ │ ├── metrics
│ │ │ ├── HibernateMetricsBinder.java
│ │ │ └── package-info.java
│ │ │ ├── package-info.java
│ │ │ ├── proxy
│ │ │ ├── GenerateProxy.java
│ │ │ ├── IntroducedHibernateProxy.java
│ │ │ ├── IntroducedHibernateProxyAdvice.java
│ │ │ ├── IntroducedHibernateProxyFactory.java
│ │ │ ├── IntroducedHibernateProxyFactoryFactory.java
│ │ │ ├── IntroducedHibernateProxyLazyInitializer.java
│ │ │ └── IntrospectedHibernateBytecodeProvider.java
│ │ │ └── validation
│ │ │ └── JPATraversableResolver.java
│ └── resources
│ │ └── META-INF
│ │ └── native-image
│ │ └── io.micronaut.sql
│ │ └── hibernate-jpa-graal
│ │ └── reflect-config.json
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── hibernate
│ │ └── jpa
│ │ ├── JavaBookService.java
│ │ ├── JavaReadOnlyBookService.java
│ │ ├── JpaConfigurationSpec.groovy
│ │ ├── JpaSetupSpec.groovy
│ │ ├── MultipleDataSourceJpaSetupSpec.groovy
│ │ ├── MutipleDataSourceJavaService.java
│ │ ├── datasources
│ │ ├── CurrentSessionWithMultipleDataSourcesSpec.groovy
│ │ ├── db1
│ │ │ ├── Product.java
│ │ │ └── ProductRepository.java
│ │ └── db2
│ │ │ ├── Bookstore.java
│ │ │ ├── BookstoreMethodLevelTransaction.java
│ │ │ └── BookstoreRepository.java
│ │ ├── jcache
│ │ ├── HibernateJCacheSetupSpec.groovy
│ │ └── TestCachedEntity.java
│ │ ├── mapping
│ │ ├── Account.java
│ │ ├── AccountRepository.java
│ │ ├── CustomIndexesDatabaseObject.java
│ │ └── MappingResourcesSpec.groovy
│ │ ├── other
│ │ └── Author.groovy
│ │ └── proxy
│ │ ├── CustomId.java
│ │ ├── Customer.java
│ │ ├── DepartmentCompositeId.java
│ │ ├── DepartmentSimpleWithEquals.java
│ │ ├── DepartmentSimpleWithoutEquals.java
│ │ ├── EmbeddedData.java
│ │ └── IntroduceHibernateProxySpec.groovy
│ └── resources
│ ├── hibernate
│ └── custom.hbm.xml
│ └── logback.xml
├── hibernate-reactive
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── hibernate
│ │ └── reactive
│ │ └── conf
│ │ ├── ExternalVertxSqlClientPoolSettingSupplier.java
│ │ └── ReactiveRegistryCreator.java
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── hibernate
│ │ └── reactive
│ │ ├── datasources
│ │ ├── CurrentSessionWithMultipleDataSourcesSpec.groovy
│ │ ├── db1
│ │ │ ├── Product.java
│ │ │ └── ProductRepository.java
│ │ └── db2
│ │ │ ├── Bookstore.java
│ │ │ ├── BookstoreMethodLevelTransaction.java
│ │ │ └── BookstoreRepository.java
│ │ └── multiple
│ │ ├── MultipleDataSourceJpaSetupSpec.groovy
│ │ ├── other
│ │ └── Author.groovy
│ │ └── xyz
│ │ └── Book.groovy
│ └── resources
│ └── logback.xml
├── jasync-sql
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jasync
│ │ ├── JasyncClientSettings.java
│ │ ├── JasyncMySQLClientFactory.java
│ │ ├── JasyncPoolConfiguration.java
│ │ ├── JasyncPostgreSQLClientFactory.java
│ │ ├── condition
│ │ ├── RequiresJasyncClient.java
│ │ └── package-info.java
│ │ ├── health
│ │ ├── JasyncHealthIndicator.java
│ │ └── package-info.java
│ │ └── package-info.java
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jasync
│ │ ├── ApplicationContextSpecification.groovy
│ │ ├── ConfigurationFixture.groovy
│ │ ├── JasyncConfigurationSpec.groovy
│ │ ├── JasyncQueryInterceptorsSpec.groovy
│ │ ├── JasyncSpec.groovy
│ │ └── health
│ │ └── JasyncHealthIndicatorSpec.groovy
│ └── resources
│ └── logback-test.xml
├── jdbc-dbcp
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── jdbc
│ │ │ └── dbcp
│ │ │ ├── DatasourceConfiguration.java
│ │ │ ├── DatasourceFactory.java
│ │ │ ├── metadata
│ │ │ ├── DbcpDataSourcePoolMetadata.java
│ │ │ └── package-info.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── native-image
│ │ └── io.micronaut.sql
│ │ └── jdbc-dbcp-graal
│ │ └── resource-config.json
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── dbcp
│ │ ├── BookService.java
│ │ ├── DatasourceConfigurationSpec.groovy
│ │ ├── DatasourceFactorySpec.groovy
│ │ ├── DatasourceTransactionManagementSpec.groovy
│ │ └── metadata
│ │ ├── AbstractDataSourcePoolMetadataSpec.groovy
│ │ ├── DbcpDataSourcePoolMetadataDisabledSpec.groovy
│ │ └── DbcpDataSourcePoolMetadataSpec.groovy
│ └── resources
│ └── logback.xml
├── jdbc-hikari
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── hikari
│ │ ├── DatasourceConfiguration.java
│ │ ├── DatasourceFactory.java
│ │ ├── HikariUrlDataSource.java
│ │ └── package-info.java
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── hikari
│ │ ├── BookService.java
│ │ ├── DatasourceConfigurationSpec.groovy
│ │ ├── DatasourceFactorySpec.groovy
│ │ ├── DatasourceTransactionManagementSpec.groovy
│ │ └── metadata
│ │ ├── AbstractDataSourcePoolMetadataSpec.groovy
│ │ ├── DataSourcePoolMetadataSpec.groovy
│ │ ├── HikariDataSourcePoolMetadataCustomPoolSpec.groovy
│ │ └── HikariDataSourcePoolMetadataDisabledSpec.groovy
│ └── resources
│ └── logback.xml
├── jdbc-tomcat
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── jdbc
│ │ │ └── tomcat
│ │ │ ├── DatasourceConfiguration.java
│ │ │ ├── DatasourceFactory.java
│ │ │ ├── metadata
│ │ │ ├── TomcatDataSourcePoolMetadata.java
│ │ │ └── package-info.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── native-image
│ │ └── io.micronaut.sql
│ │ └── jdbc-tomcat-graal
│ │ └── proxy-config.json
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── tomcat
│ │ ├── BookService.java
│ │ ├── DatasourceConfigurationSpec.groovy
│ │ ├── DatasourceFactorySpec.groovy
│ │ ├── DatasourceTransactionManagementSpec.groovy
│ │ └── metadata
│ │ ├── AbstractDataSourcePoolMetadataSpec.groovy
│ │ ├── TomcatDataSourcePoolMetadataDisabledSpec.groovy
│ │ └── TomcatDataSourcePoolMetadataSpec.groovy
│ └── resources
│ └── logback.xml
├── jdbc-ucp
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── ucp
│ │ ├── ConnectionPoolManagerListener.java
│ │ ├── DatasourceConfiguration.java
│ │ ├── DatasourceFactory.java
│ │ ├── OracleUcpConfiguration.java
│ │ ├── OracleUcpConfigurator.java
│ │ ├── UniversalConnectionPoolManagerConfiguration.java
│ │ ├── UniversalConnectionPoolManagerFactory.java
│ │ └── package-info.java
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbc
│ │ └── ucp
│ │ ├── DatasourceConfigurationSpec.groovy
│ │ ├── UniversalConnectionPoolManagerConfigurationSpec.groovy
│ │ └── UniversalConnectionPoolManagerFactorySpec.groovy
│ └── resources
│ └── logback.xml
├── jdbc
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── jdbc
│ │ │ ├── BasicJdbcConfiguration.java
│ │ │ ├── CalculatedSettings.java
│ │ │ ├── DataSourceResolver.java
│ │ │ ├── JdbcDataSourceEnabled.java
│ │ │ ├── JdbcDatabaseManager.java
│ │ │ ├── metadata
│ │ │ ├── AbstractDataSourcePoolMetadata.java
│ │ │ ├── DataSourcePoolMetadata.java
│ │ │ ├── DataSourcePoolMetadataProvider.java
│ │ │ └── package-info.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── native-image
│ │ └── io.micronaut.sql
│ │ └── micronaut-jdbc
│ │ ├── native-image.properties
│ │ └── reflect-config.json
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── jdbc
│ │ └── CalculatedSettingsSpec.groovy
│ └── resources
│ ├── h2.jar
│ ├── logback.xml
│ └── mysql.jar
├── jdbi
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jdbi
│ │ ├── JdbiCustomizer.java
│ │ ├── JdbiFactory.java
│ │ ├── package-info.java
│ │ └── transaction
│ │ ├── AbstractTransactionHandler.java
│ │ ├── micronaut
│ │ └── MicronautDataTransactionHandler.java
│ │ ├── package-info.java
│ │ └── spring
│ │ ├── SpringTransactionHandler.java
│ │ └── package-info.java
│ ├── test
│ ├── groovy
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── jdbi
│ │ │ ├── DataSourceTransactionManagerFactory.java
│ │ │ ├── JdbiSpec.groovy
│ │ │ ├── TestInterface.java
│ │ │ ├── TestJdbiCustomizer.java
│ │ │ └── TestService.java
│ └── resources
│ │ └── logback.xml
│ └── txTest
│ └── groovy
│ └── io
│ └── micronaut
│ └── configuration
│ └── jdbi
│ ├── TxJdbiSpec.groovy
│ ├── TxTestService.java
│ └── example
│ ├── ApplicationSpec.groovy
│ ├── DatabaseSetup.java
│ ├── dao
│ ├── BookMapper.java
│ ├── BooksDao.java
│ └── DaoFactory.java
│ ├── jdbitransaction
│ └── ConcurrentTransactionsBug.java
│ └── model
│ └── Book.java
├── jooq
├── build.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── jooq
│ │ │ ├── AbstractJooqConfigurationFactory.java
│ │ │ ├── AbstractJooqConfigurationProperties.java
│ │ │ ├── DSLContextFactory.java
│ │ │ ├── JooqConfigurationFactory.java
│ │ │ ├── JooqConfigurationProperties.java
│ │ │ ├── JsonConverterProvider.java
│ │ │ ├── MicronautTransaction.java
│ │ │ ├── MicronautTransactionProvider.java
│ │ │ ├── R2dbcJooqConfigurationFactory.java
│ │ │ ├── R2dbcJooqConfigurationProperties.java
│ │ │ ├── package-info.java
│ │ │ └── spring
│ │ │ ├── JooqExceptionTranslator.java
│ │ │ ├── JooqExceptionTranslatorProvider.java
│ │ │ ├── SpringTransaction.java
│ │ │ ├── SpringTransactionProvider.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── native-image
│ │ └── io.micronaut.sql
│ │ └── jooq-graal
│ │ └── native-image.properties
│ ├── test
│ ├── groovy
│ │ └── io
│ │ │ └── micronaut
│ │ │ └── configuration
│ │ │ └── jooq
│ │ │ ├── ConverterProviderSpec.groovy
│ │ │ ├── CustomConverterProvider.java
│ │ │ ├── JsonConverterSpec.groovy
│ │ │ ├── TestObject.java
│ │ │ ├── TestService.java
│ │ │ └── spring
│ │ │ ├── DataSourceTransactionManagerFactory.java
│ │ │ └── DslContextSpec.groovy
│ └── resources
│ │ └── logback.xml
│ └── txTest
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── jooq
│ │ ├── TxDslContextSpec.groovy
│ │ └── TxTestService.java
│ └── resources
│ └── logback.xml
├── settings.gradle
├── sql-bom
└── build.gradle
├── src
└── main
│ └── docs
│ └── guide
│ ├── breaks.adoc
│ ├── hibernate.adoc
│ ├── hibernate
│ ├── hibernate-customizing.adoc
│ ├── hibernate-disable.adoc
│ ├── hibernate-entity-scan.adoc
│ ├── hibernate-inject-session.adoc
│ ├── hibernate-lazy-initialization.adoc
│ ├── hibernate-proxies.adoc
│ └── hibernate-reactive.adoc
│ ├── introduction.adoc
│ ├── jasync.adoc
│ ├── jasync
│ ├── jasync-client.adoc
│ └── jasync-healthchecks.adoc
│ ├── jdbc.adoc
│ ├── jdbc
│ ├── jdbc-connection-pools.adoc
│ ├── jdbc-disable.adoc
│ ├── jdbc-healthchecks.adoc
│ └── jdbc-multiple-datasources.adoc
│ ├── jdbi.adoc
│ ├── jdbi
│ └── jdbi-provider-beans.adoc
│ ├── jooq.adoc
│ ├── jooq
│ ├── jooq-dialect.adoc
│ ├── jooq-graalvm.adoc
│ ├── jooq-jsonb.adoc
│ └── jooq-provider-beans.adoc
│ ├── releaseHistory.adoc
│ ├── repository.adoc
│ ├── toc.yml
│ ├── vertxmysqlclient.adoc
│ ├── vertxmysqlclient
│ └── vertxmysqlclient-healthchecks.adoc
│ ├── vertxpgclient.adoc
│ └── vertxpgclient
│ └── vertxpgclient-healthchecks.adoc
├── tests
├── common-reactive
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ └── java
│ │ └── example
│ │ └── reactive
│ │ ├── DestroyController.java
│ │ ├── IOwnerRepository.java
│ │ ├── IPetRepository.java
│ │ ├── InitController.java
│ │ ├── Mapper.java
│ │ ├── OwnerController.java
│ │ └── PetController.java
├── common-sync
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ └── java
│ │ └── example
│ │ └── sync
│ │ ├── DestroyController.java
│ │ ├── IOwnerRepository.java
│ │ ├── IPetRepository.java
│ │ ├── InitController.java
│ │ ├── Mapper.java
│ │ ├── OwnerController.java
│ │ └── PetController.java
├── common-tests
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ └── java
│ │ └── example
│ │ └── sync
│ │ └── AbstractApp.java
├── common
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── example
│ │ │ ├── Application.java
│ │ │ ├── domain
│ │ │ ├── IOwner.java
│ │ │ └── IPet.java
│ │ │ └── dto
│ │ │ ├── OwnerDto.java
│ │ │ └── PetDto.java
│ │ └── resources
│ │ └── application.yml
├── hibernate6
│ ├── hibernate6-h2
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── H2App.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-mariadb
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── MariaDBApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-mssql
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── MSSQLApp.java
│ │ │ └── resources
│ │ │ ├── application-test.yml
│ │ │ └── logback.xml
│ ├── hibernate6-mysql-disabled
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── main
│ │ │ └── resources
│ │ │ │ └── application.properties
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── TempTest.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-mysql
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ ├── DisabledDbAppTest.java
│ │ │ │ └── MySQLApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-oracle
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── OracleDBApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-postgres
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── sync
│ │ │ │ └── PostgresApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-reactive-common
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── reactive
│ │ │ │ ├── Owner.java
│ │ │ │ ├── OwnerRepository.java
│ │ │ │ ├── Pet.java
│ │ │ │ ├── PetRepository.java
│ │ │ │ └── TxManager.java
│ │ │ └── resources
│ │ │ └── application.yml
│ ├── hibernate6-reactive-mssql
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── reactive
│ │ │ │ └── MSSQLApp.java
│ │ │ └── resources
│ │ │ ├── application-test.yml
│ │ │ └── logback.xml
│ ├── hibernate6-reactive-mysql
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── reactive
│ │ │ │ └── MySQLApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-reactive-oracle
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── reactive
│ │ │ │ └── OracleDBApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ ├── hibernate6-reactive-postgres
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── test
│ │ │ ├── java
│ │ │ └── example
│ │ │ │ └── hibernate6
│ │ │ │ └── reactive
│ │ │ │ └── PostgresApp.java
│ │ │ └── resources
│ │ │ └── logback.xml
│ └── hibernate6-sync-common
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── example
│ │ │ └── hibernate6
│ │ │ └── sync
│ │ │ ├── Owner.java
│ │ │ ├── OwnerRepository.java
│ │ │ ├── Pet.java
│ │ │ ├── PetRepository.java
│ │ │ └── TestController.java
│ │ └── resources
│ │ └── application.yml
├── jdbc-dbcp-tests
│ └── jdbc-dbcp-postgres
│ │ ├── build.gradle
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── example
│ │ │ └── jdbc
│ │ │ └── ucp
│ │ │ └── sync
│ │ │ ├── Owner.java
│ │ │ ├── OwnerRepository.java
│ │ │ ├── Pet.java
│ │ │ └── PetRepository.java
│ │ └── test
│ │ └── java
│ │ └── example
│ │ └── jdbc
│ │ └── ucp
│ │ └── sync
│ │ └── PostgresApp.java
├── jdbc-tomcat-tests
│ └── jdbc-tomcat-mysql
│ │ ├── build.gradle
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── example
│ │ │ └── jdbc
│ │ │ └── tomcat
│ │ │ └── sync
│ │ │ ├── Owner.java
│ │ │ ├── OwnerRepository.java
│ │ │ ├── Pet.java
│ │ │ └── PetRepository.java
│ │ └── test
│ │ └── java
│ │ └── example
│ │ └── jdbc
│ │ └── tomcat
│ │ └── sync
│ │ └── MySQLApp.java
├── jdbc-ucp-tests
│ └── jdbc-ucp-oracle
│ │ ├── build.gradle
│ │ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── example
│ │ │ └── jdbc
│ │ │ └── ucp
│ │ │ └── sync
│ │ │ ├── Owner.java
│ │ │ ├── OwnerRepository.java
│ │ │ ├── Pet.java
│ │ │ └── PetRepository.java
│ │ └── test
│ │ ├── java
│ │ └── example
│ │ │ └── jdbc
│ │ │ └── ucp
│ │ │ └── sync
│ │ │ ├── DisabledDbAppTest.java
│ │ │ └── OracleApp.java
│ │ └── resources
│ │ └── logback.xml
└── jooq-tests
│ ├── jooq-jdbc-postgres
│ ├── build.gradle
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── example
│ │ │ └── jooq
│ │ │ └── sync
│ │ │ ├── Owner.java
│ │ │ ├── OwnerRepository.java
│ │ │ ├── Pet.java
│ │ │ └── PetRepository.java
│ │ └── test
│ │ ├── java
│ │ └── example
│ │ │ └── jooq
│ │ │ └── sync
│ │ │ ├── DisabledDbAppTest.java
│ │ │ └── PostgresApp.java
│ │ └── resources
│ │ └── logback.xml
│ └── jooq-r2dbc-postgres
│ ├── build.gradle
│ └── src
│ ├── main
│ └── java
│ │ └── example
│ │ └── jooq
│ │ └── reactive
│ │ ├── AbstractRepository.java
│ │ ├── Owner.java
│ │ ├── OwnerRepository.java
│ │ ├── Pet.java
│ │ └── PetRepository.java
│ └── test
│ ├── java
│ └── example
│ │ └── jooq
│ │ └── reactive
│ │ └── PostgresApp.java
│ └── resources
│ └── logback.xml
├── vertx-mysql-client
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── vertx
│ │ └── mysql
│ │ └── client
│ │ ├── MySQLClientConfiguration.java
│ │ ├── MySQLClientFactory.java
│ │ ├── MySQLClientSettings.java
│ │ ├── MySQLDriverFactory.java
│ │ ├── condition
│ │ └── RequiresVertxMySQLClient.java
│ │ ├── health
│ │ ├── MySQLHealthIndicator.java
│ │ └── package-info.java
│ │ └── package-info.java
│ └── test
│ ├── groovy
│ └── io
│ │ └── micronaut
│ │ └── configuration
│ │ └── vertx
│ │ └── mysql
│ │ └── client
│ │ ├── MySQLClientSpec.groovy
│ │ ├── MySQLConfigurationSpec.groovy
│ │ └── health
│ │ └── MySQLPoolHealthIndicatorSpec.groovy
│ └── resources
│ └── logback-test.xml
└── vertx-pg-client
├── build.gradle
└── src
├── main
└── java
│ └── io
│ └── micronaut
│ └── configuration
│ └── vertx
│ └── pg
│ └── client
│ ├── PgClientConfiguration.java
│ ├── PgClientFactory.java
│ ├── PgClientSettings.java
│ ├── PgDriverFactory.java
│ ├── condition
│ └── RequiresVertxPgClient.java
│ ├── health
│ ├── PgHealthIndicator.java
│ └── package-info.java
│ └── package-info.java
└── test
├── groovy
└── io
│ └── micronaut
│ └── configuration
│ └── vertx
│ └── pg
│ └── client
│ ├── PgClientConfigurationSpec.groovy
│ ├── PgClientSpec.groovy
│ └── health
│ └── PgClientHealthIndicatorSpec.groovy
└── resources
└── logback-test.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | trim_trailing_whitespace = true
5 | insert_final_newline = true
6 | charset = utf-8
7 | indent_style = space
8 |
9 | [{*.sh,gradlew}]
10 | end_of_line = lf
11 |
12 | [{*.bat,*.cmd}]
13 | end_of_line = crlf
14 |
15 | [{*.mustache,*.ftl}]
16 | insert_final_newline = false
17 |
18 | [*.java]
19 | indent_size = 4
20 | tab_width = 4
21 | max_line_length = 100
22 | # Import order can be configured with ij_java_imports_layout=...
23 | # See documentation https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0
24 |
25 | [*.xml]
26 | indent_size = 4
27 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | *.java text eol=lf
5 | *.groovy text eol=lf
6 | *.html text eol=lf
7 | *.kt text eol=lf
8 | *.kts text eol=lf
9 | *.md text diff=markdown eol=lf
10 | *.py text diff=python executable
11 | *.pl text diff=perl executable
12 | *.pm text diff=perl
13 | *.css text diff=css eol=lf
14 | *.js text eol=lf
15 | *.sql text eol=lf
16 | *.q text eol=lf
17 |
18 | *.sh text eol=lf
19 | gradlew text eol=lf
20 |
21 | *.bat text eol=crlf
22 | *.cmd text eol=crlf
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | contact_links:
2 | - name: Micronaut Core Discussions
3 | url: https://github.com/micronaut-projects/micronaut-core/discussions
4 | about: Ask questions about Micronaut on Github
5 | - name: Micronaut Data Discussions
6 | url: https://github.com/micronaut-projects/micronaut-data/discussions
7 | about: Ask Micronaut Data related questions on Github
8 | - name: Stack Overflow
9 | url: https://stackoverflow.com/tags/micronaut
10 | about: Ask questions on Stack Overflow
11 | - name: Chat
12 | url: https://gitter.im/micronautfw/
13 | about: Chat with us on Gitter.
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/new_feature.yaml:
--------------------------------------------------------------------------------
1 | name: Feature request
2 | description: Create a new feature request
3 | body:
4 | - type: markdown
5 | attributes:
6 | value: |
7 | Please describe the feature you want for Micronaut to implement, before that check if there is already an existing issue to add it.
8 | - type: textarea
9 | attributes:
10 | label: Feature description
11 | placeholder: Tell us what feature you would like for Micronaut to have and what problem is it going to solve
12 | validations:
13 | required: true
14 |
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/other.yaml:
--------------------------------------------------------------------------------
1 | name: Other
2 | description: Something different
3 | body:
4 | - type: textarea
5 | attributes:
6 | label: Issue description
7 | validations:
8 | required: true
9 |
10 |
--------------------------------------------------------------------------------
/.github/release.yml:
--------------------------------------------------------------------------------
1 | changelog:
2 | exclude:
3 | authors:
4 | - micronaut-build
5 | categories:
6 | - title: Breaking Changes 🛠
7 | labels:
8 | - 'type: breaking'
9 | - title: New Features 🎉
10 | labels:
11 | - 'type: enhancement'
12 | - title: Bug Fixes 🐞
13 | labels:
14 | - 'type: bug'
15 | - title: Improvements ⭐
16 | labels:
17 | - 'type: improvement'
18 | - title: Docs 📖
19 | labels:
20 | - 'type: docs'
21 | - title: Dependency updates 🚀
22 | labels:
23 | - 'type: dependency-upgrade'
24 | - 'dependency-upgrade'
25 | - title: Regressions 🧐
26 | labels:
27 | - 'type: regression'
28 | - title: GraalVM 🏆
29 | labels:
30 | - 'relates-to: graal'
31 | - title: Other Changes 💡
32 | labels:
33 | - "*"
34 |
--------------------------------------------------------------------------------
/.github/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:recommended"
4 | ],
5 | "addLabels": [
6 | "type: dependency-upgrade"
7 | ],
8 | "schedule": [
9 | "after 10pm"
10 | ],
11 | "prHourlyLimit": 1,
12 | "prConcurrentLimit": 20,
13 | "timezone": "Europe/Prague",
14 | "packageRules": [
15 | {
16 | "dependencyDashboardApproval": true,
17 | "matchUpdateTypes": [
18 | "patch"
19 | ],
20 | "matchCurrentVersion": "!/^0/",
21 | "automerge": true,
22 | "matchPackageNames": [
23 | "/actions.*/"
24 | ]
25 | },
26 | {
27 | "matchUpdateTypes": [
28 | "patch"
29 | ],
30 | "matchCurrentVersion": "!/^0/",
31 | "automerge": true
32 | }
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------
/.github/workflows/publish-snapshot.yml:
--------------------------------------------------------------------------------
1 | # WARNING: Do not edit this file directly. Instead, go to:
2 | #
3 | # https://github.com/micronaut-projects/micronaut-project-template/tree/master/.github/workflows
4 | #
5 | # and edit them there. Note that it will be sync'ed to all the Micronaut repos
6 | name: Publish snapshot release
7 | on: [workflow_dispatch]
8 | jobs:
9 | build:
10 | if: github.repository != 'micronaut-projects/micronaut-project-template'
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v4
14 | - uses: actions/cache@v4
15 | with:
16 | path: ~/.gradle/caches
17 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
18 | restore-keys: |
19 | ${{ runner.os }}-gradle-
20 | - name: Set up JDK
21 | uses: actions/setup-java@v4
22 | with:
23 | distribution: 'temurin'
24 | java-version: '17'
25 | - name: Publish to Sonatype Snapshots
26 | if: success()
27 | env:
28 | SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
29 | SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
30 | DEVELOCITY_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
31 | DEVELOCITY_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USERNAME }}
32 | DEVELOCITY_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
33 | run: ./gradlew publishToSonatype --no-daemon
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | .DS_Store
3 | target/
4 | .gradle/
5 | .idea/
6 | build/
7 | !build-logic/src/main/java/io/micronaut/build
8 | classes/
9 | out/
10 | *.db
11 | *.log
12 | *.iml
13 | .classpath
14 | .factorypath
15 | bin/
16 | .settings/
17 | .project
18 | */test/
19 | */META-INF/
20 | *.ipr
21 | *.iws
22 | .kotlintest
23 | */.kotlintest/
24 |
25 | # ignore resources, are downloaded via a gradle task from micronaut_docs
26 | src/main/docs/resources/css/highlight/*.css
27 | src/main/docs/resources/css/highlight/*.png
28 | src/main/docs/resources/css/highlight/*.jpg
29 | src/main/docs/resources/css/*.css
30 | src/main/docs/resources/js/*.js
31 | src/main/docs/resources/style/*.html
32 | src/main/docs/resources/img/micronaut-logo-white.svg
33 |
34 | # Ignore files generated by test-resources
35 | **/.micronaut/test-resources/
36 |
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Thanks for reporting an issue, please review the task list below before submitting the
2 | issue. Your issue report will be closed if the issue is incomplete and the below tasks not completed.
3 |
4 | NOTE: If you are unsure about something and the issue is more of a question a better place to ask questions is on Stack Overflow (https://stackoverflow.com/tags/micronaut) or Gitter (https://gitter.im/micronautfw/). DO NOT use the issue tracker to ask questions.
5 |
6 | ### Task List
7 |
8 | - [ ] Steps to reproduce provided
9 | - [ ] Stacktrace (if present) provided
10 | - [ ] Example that reproduces the problem uploaded to Github
11 | - [ ] Full description of the issue provided (see below)
12 |
13 | ### Steps to Reproduce
14 |
15 | 1. TODO
16 | 2. TODO
17 | 3. TODO
18 |
19 | ### Expected Behaviour
20 |
21 | Tell us what should happen
22 |
23 | ### Actual Behaviour
24 |
25 | Tell us what happens instead
26 |
27 | ### Environment Information
28 |
29 | - **Operating System**: TODO
30 | - **Micronaut Version:** TODO
31 | - **JDK Version:** TODO
32 |
33 | ### Example Application
34 |
35 | - TODO: link to github repository with example that reproduces the issue
36 |
37 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | We release patches for security vulnerabilities. Which versions are eligible
4 | receiving such patches depend on the CVSS v3.0 Rating:
5 |
6 | | CVSS v3.0 | Supported Versions |
7 | |-----------|-------------------------------------------|
8 | | 9.0-10.0 | Releases within the previous three months |
9 | | 4.0-8.9 | Most recent release |
10 |
11 | ## Reporting a Vulnerability
12 |
13 | Please responsibly disclose (suspected) security vulnerabilities to
14 | **[The Micronaut Foundation](foundation@micronaut.io)**. You will receive a response from
15 | us within 48 hours. If the issue is confirmed, we will release a patch as soon
16 | as possible depending on complexity but historically within a few days.
17 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "io.micronaut.build.internal.docs"
3 | id "io.micronaut.build.internal.quality-reporting"
4 | }
5 |
6 | repositories {
7 | mavenCentral()
8 | }
9 |
10 | if (System.getenv("SONAR_TOKEN") != null) {
11 | sonarqube {
12 | properties {
13 | property "sonar.exclusions", "**/example/**"
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/buildSrc/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'groovy-gradle-plugin'
3 | }
4 |
5 | repositories {
6 | gradlePluginPortal()
7 | mavenCentral()
8 | }
9 |
10 | dependencies {
11 | implementation libs.gradle.micronaut
12 | implementation(libs.sonatype.scan)
13 | }
14 |
--------------------------------------------------------------------------------
/buildSrc/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'sql-parent'
2 | dependencyResolutionManagement {
3 | versionCatalogs {
4 | libs {
5 | from(files("../gradle/libs.versions.toml"))
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.sql-base.gradle:
--------------------------------------------------------------------------------
1 | repositories {
2 | mavenCentral()
3 | }
4 |
5 | dependencies {
6 | testImplementation mnSerde.micronaut.serde.jackson
7 | }
8 |
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.sql-module.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.micronaut.build.internal.module'
3 | id 'io.micronaut.build.internal.sql-base'
4 | id("org.sonatype.gradle.plugins.scan")
5 | }
6 | String ossIndexUsername = System.getenv("OSS_INDEX_USERNAME") ?: project.properties["ossIndexUsername"]
7 | String ossIndexPassword = System.getenv("OSS_INDEX_PASSWORD") ?: project.properties["ossIndexPassword"]
8 | boolean sonatypePluginConfigured = ossIndexUsername != null && ossIndexPassword != null
9 | if (sonatypePluginConfigured) {
10 | ossIndexAudit {
11 | username = ossIndexUsername
12 | password = ossIndexPassword
13 | excludeCoordinates = [
14 | "com.h2database:h2:2.3.232" // no version patched https://ossindex.sonatype.org/component/pkg:maven/com.h2database/h2
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.test-application-hibernate6.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.micronaut.build.internal.test-application'
3 | }
4 | dependencies {
5 | testImplementation(mnData.micronaut.data.tx.hibernate)
6 | }
7 |
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.test-application.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.micronaut.build.internal.testing-base'
3 | id 'io.micronaut.application'
4 | id 'io.micronaut.test-resources'
5 | }
6 |
7 | micronaut {
8 | importMicronautPlatform = false
9 | runtime "netty"
10 | testRuntime "junit"
11 | testResources {
12 | clientTimeout = 180
13 | version = libs.versions.micronaut.test.resources.get()
14 | }
15 | }
16 |
17 | dependencies {
18 | runtimeOnly mnLogging.logback.classic
19 | implementation mn.micronaut.http.client
20 | testImplementation mnTest.micronaut.test.core
21 | testImplementation(mnTestResources.testcontainers.jdbc)
22 |
23 | micronautBoms(platform(mn.micronaut.core.bom))
24 | micronautBoms(platform(mnData.micronaut.data.bom))
25 | }
26 |
27 | application {
28 | mainClass = "example.Application"
29 | }
30 |
31 | configurations.all {
32 | resolutionStrategy.preferProjectModules()
33 | }
34 |
35 | graalvmNative {
36 | toolchainDetection = false
37 | binaries {
38 | all {
39 | buildArgs.add("--report-unsupported-elements-at-runtime")
40 | }
41 | }
42 | metadataRepository {
43 | enabled = true
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.test-library.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.micronaut.build.internal.testing-base'
3 | id 'io.micronaut.minimal.library'
4 | }
5 |
6 | micronaut {
7 | importMicronautPlatform = false
8 | }
9 |
10 | dependencies {
11 | micronautBoms(platform(mnData.micronaut.data.bom))
12 | }
13 |
--------------------------------------------------------------------------------
/buildSrc/src/main/groovy/io.micronaut.build.internal.testing-base.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'java'
3 | id 'jacoco'
4 | id 'io.micronaut.build.internal.sql-base'
5 | }
6 |
7 | group "io.micronaut.example"
8 |
9 | tasks.register("testExamples") {
10 | dependsOn "test"
11 | }
12 |
--------------------------------------------------------------------------------
/config/HEADER:
--------------------------------------------------------------------------------
1 | Copyright ${year} original authors
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | https://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/config/accepted-api-changes.json:
--------------------------------------------------------------------------------
1 | [
2 |
3 | ]
4 |
--------------------------------------------------------------------------------
/config/checkstyle/suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/config/spotless.license.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-$YEAR original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | projectVersion=6.1.2-SNAPSHOT
2 | projectGroup=io.micronaut.sql
3 |
4 | title=Micronaut SQL Libraries
5 | projectDesc=Projects to support SQL Database access in Micronaut
6 | projectUrl=https://micronaut.io
7 | githubSlug=micronaut-projects/micronaut-sql
8 | developers=Graeme Rocher
9 |
10 |
11 | hibernateapi=https://docs.jboss.org/hibernate/orm/current/javadocs
12 | jdkapi=https://docs.oracle.com/en/java/javase/17/docs/api
13 | jooqapi=https://www.jooq.org/javadoc/latest
14 | jdbiapi=https://jdbi.org/apidocs
15 |
16 | org.gradle.caching=true
17 | org.gradle.jvmargs=-Xmx2048M
18 |
--------------------------------------------------------------------------------
/gradle/license.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.hierynomus.license'
2 |
3 | license {
4 | header = rootProject.file('config/HEADER')
5 | strictCheck = true
6 | ignoreFailures = true
7 | mapping {
8 | kt = 'SLASHSTAR_STYLE'
9 | java = 'SLASHSTAR_STYLE'
10 | groovy = 'SLASHSTAR_STYLE'
11 | }
12 | ext.year = '2017-2020'
13 |
14 | exclude "**/transaction/**"
15 | exclude '**/*.txt'
16 | exclude '**/*.html'
17 | exclude '**/*.xml'
18 | exclude '**/*.json'
19 | exclude '**/build-info.properties'
20 | exclude '**/git.properties'
21 | exclude '**/othergit.properties'
22 | }
23 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/micronaut-projects/micronaut-sql/4bef137057148827b121cbefee306be3dfbdaa1f/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/hibernate-jpa/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'io.micronaut.build.internal.sql-module'
3 | }
4 |
5 | dependencies {
6 | annotationProcessor(mn.micronaut.graal)
7 |
8 | api(libs.managed.hibernate.core)
9 | api(libs.managed.jakarta.transaction.api)
10 | api(mnValidation.micronaut.validation)
11 | compileOnly(mnData.micronaut.data.tx.hibernate)
12 | testImplementation(mnData.micronaut.data.tx.hibernate)
13 | api(mn.micronaut.aop)
14 | api projects.micronautJdbc
15 |
16 | compileOnly(libs.managed.hibernate.micrometer)
17 | compileOnly(libs.managed.hibernate.jcache)
18 | compileOnly(mn.micronaut.management)
19 | compileOnly(mnMicrometer.micronaut.micrometer.core)
20 |
21 | testAnnotationProcessor(mn.micronaut.inject.java)
22 | testImplementation(mn.micronaut.inject.java)
23 | testImplementation(libs.managed.hibernate.jcache)
24 | testImplementation(mn.micronaut.management)
25 | testImplementation(mn.micronaut.inject.groovy)
26 | testImplementation(mn.micronaut.function.web)
27 | testImplementation(mnCache.micronaut.cache.core)
28 | testImplementation(mnMicrometer.micronaut.micrometer.core)
29 | testImplementation(libs.managed.hibernate.micrometer)
30 |
31 | testRuntimeOnly projects.micronautJdbcTomcat
32 | testRuntimeOnly(libs.managed.h2)
33 |
34 | testCompileOnly(mnData.micronaut.data.connection.jdbc)
35 | }
36 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/HibernateCurrentSessionContextClassProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa;
17 |
18 | import org.hibernate.context.spi.CurrentSessionContext;
19 |
20 | /**
21 | * Provides the value for {@link org.hibernate.cfg.AvailableSettings#CURRENT_SESSION_CONTEXT_CLASS}.
22 | *
23 | * @author Denis Stepanov
24 | * @since 3.3.2
25 | */
26 | public interface HibernateCurrentSessionContextClassProvider {
27 |
28 | /**
29 | * @return the class implementing {@link CurrentSessionContext}
30 | */
31 | Class extends CurrentSessionContext> get();
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/TransactionalSession.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa;
17 |
18 | import io.micronaut.context.annotation.EachBean;
19 | import io.micronaut.core.annotation.Internal;
20 | import org.hibernate.Session;
21 | import org.hibernate.SessionFactory;
22 |
23 | /**
24 | * Represents a transaction aware session that can be dependency injected.
25 | *
26 | * @author graemerocher
27 | * @since 2.0
28 | */
29 | @EachBean(SessionFactory.class)
30 | @TransactionalSessionAdvice
31 | @Internal
32 | public interface TransactionalSession extends Session {
33 | }
34 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/TransactionalSessionAdvice.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa;
17 |
18 | import io.micronaut.aop.Introduction;
19 | import io.micronaut.core.annotation.Internal;
20 | import java.lang.annotation.Retention;
21 |
22 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
23 |
24 | /**
25 | * An introduction advice annotation used to create a transaction aware session.
26 | * Considered internal and not for explicit usage.
27 | *
28 | * @see TransactionalSessionInterceptor
29 | * @see TransactionalSession
30 | */
31 | @Retention(RUNTIME)
32 | @Introduction
33 | @Internal
34 | @interface TransactionalSessionAdvice {
35 | }
36 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/conf/settings/SettingsSupplier.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2022 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa.conf.settings;
17 |
18 | import io.micronaut.configuration.hibernate.jpa.JpaConfiguration;
19 | import io.micronaut.core.annotation.Indexed;
20 | import io.micronaut.core.order.Ordered;
21 |
22 | import java.util.Map;
23 |
24 | /**
25 | * Supply additional settings for {@link JpaConfiguration}.
26 | *
27 | * @author Denis Stepanov
28 | * @since 4.5.0
29 | */
30 | @Indexed(SettingsSupplier.class)
31 | public interface SettingsSupplier extends Ordered {
32 |
33 | /**
34 | * Supply additional settings for {@link JpaConfiguration}.
35 | *
36 | * @param jpaConfiguration The JPA configuration
37 | * @return the additional settings
38 | */
39 | Map supply(JpaConfiguration jpaConfiguration);
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/metrics/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | /**
17 | * Classes related to tracking metrics for Hibernate.
18 | *
19 | * @author graemerocher
20 | * @since 1.0
21 | */
22 | package io.micronaut.configuration.hibernate.jpa.metrics;
23 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | /**
17 | * This package contains a configuration for Hibernate and JPA.
18 | *
19 | * @author graemerocher
20 | * @since 1.0
21 | */
22 | @Configuration
23 | @Requires(property = "jpa.enabled", value = StringUtils.TRUE, defaultValue = StringUtils.TRUE)
24 | @Requires(classes = {SessionFactory.class, Entity.class})
25 | package io.micronaut.configuration.hibernate.jpa;
26 |
27 | import io.micronaut.context.annotation.Configuration;
28 | import io.micronaut.context.annotation.Requires;
29 | import io.micronaut.core.util.StringUtils;
30 | import org.hibernate.SessionFactory;
31 |
32 | import jakarta.persistence.Entity;
33 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/proxy/GenerateProxy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa.proxy;
17 |
18 | import io.micronaut.aop.Around;
19 | import io.micronaut.aop.Introduction;
20 | import io.micronaut.context.annotation.Type;
21 | import io.micronaut.core.annotation.Experimental;
22 |
23 | import java.lang.annotation.Documented;
24 | import java.lang.annotation.ElementType;
25 | import java.lang.annotation.Retention;
26 | import java.lang.annotation.Target;
27 |
28 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
29 |
30 | /**
31 | * Annotated Entity class will have a compile time Hibernate proxy.
32 | *
33 | * @author Denis Stepanov
34 | * @since 3.3.0
35 | */
36 | @Around
37 | @Introduction(interfaces = IntroducedHibernateProxy.class)
38 | @Type(IntroducedHibernateProxyAdvice.class)
39 | @Documented
40 | @Retention(RUNTIME)
41 | @Target({ElementType.TYPE})
42 | @Experimental
43 | public @interface GenerateProxy {
44 | }
45 |
--------------------------------------------------------------------------------
/hibernate-jpa/src/main/java/io/micronaut/configuration/hibernate/jpa/proxy/IntroducedHibernateProxy.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2017-2020 original authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package io.micronaut.configuration.hibernate.jpa.proxy;
17 |
18 | import io.micronaut.aop.MethodInterceptor;
19 | import io.micronaut.core.annotation.Internal;
20 | import org.hibernate.proxy.HibernateProxy;
21 |
22 | /**
23 | * Introduced {@link HibernateProxy} interface to register an interceptor.
24 | *
25 | * @author Denis Stepanov
26 | * @since 3.3.0
27 | */
28 | @Internal
29 | public interface IntroducedHibernateProxy extends HibernateProxy {
30 |
31 | @SuppressWarnings("MethodName")
32 | void $registerInterceptor(MethodInterceptor