This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 33ba7a40266fc3bdfdb057b1818d620702d87b9b
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Mon Feb 23 09:08:14 2026 -0600

    added GrailsNamedStrategyContributor and changed NamingStrategyContributor
---
 grails-data-hibernate7/DEPRECATIONS.md             | 50 ----------------------
 .../HIBERNATE7-GRAILS8-UPGRADE.md                  | 12 ------
 .../cfg/GrailsNamedStrategyContributor.java        | 28 ++++++++++++
 .../cfg/HibernateMappingContextConfiguration.java  | 13 +++---
 .../domainbinding/util/NamingStrategyProvider.java |  8 ++--
 ....registry.selector.spi.NamedStrategyContributor |  1 +
 .../NamingStrategyProviderSpec.groovy              |  6 +--
 7 files changed, 41 insertions(+), 77 deletions(-)

diff --git a/grails-data-hibernate7/DEPRECATIONS.md 
b/grails-data-hibernate7/DEPRECATIONS.md
deleted file mode 100644
index de23915818..0000000000
--- a/grails-data-hibernate7/DEPRECATIONS.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Deprecation Warnings — grails-data-hibernate7
-
-Generated from a clean build of `grails-data-hibernate7` (and its four Gradle 
subprojects) with `-Xlint:deprecation -Xlint:all` compiler flags. Only warnings 
originating from source files within this module are listed; warnings from 
generated stubs or upstream dependencies are excluded.
-
-> **Warning types**
-> | Code | Meaning |
-> |---|---|
-> | `[deprecation]` | Uses a `@Deprecated` API |
-> | `[removal]` | Uses an API deprecated and **marked for removal** |
-> | `[unchecked]` | Unsafe unchecked / cast operation |
-> | `[rawtypes]` | Uses a raw (un-parameterized) generic type |
-> | `[serial]` | Serializable class without `serialVersionUID` |
-
----
-
-## Warnings table
-
-| Fully Qualified Class Name | Line | Warning |
-|---|---|---|
-| `org.grails.orm.hibernate.access.TraitPropertyAccessStrategy` | 39 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.access.TraitPropertyAccessStrategy` | 117 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 39 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 52 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 60 | `[rawtypes]` 
found raw type: Closure |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 70 | `[rawtypes]` 
found raw type: MappingFactory |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 75 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 86 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 91 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContext` | 96 | `[rawtypes]` 
found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 99 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 115 | 
`[deprecation]` DATASOURCE in JdbcSettings has been deprecated |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 130 | 
`[deprecation]` DATASOURCE in JdbcSettings has been deprecated |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 150 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 158 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 259 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 261 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 262 | 
`[unchecked]` unchecked call to isAnnotationPresent(Class<? extends 
Annotation>) as a member of the raw type Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 268 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 275 | 
`[rawtypes]` found raw type: Class |
-| `org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration` | 300 | 
`[removal]` \<T\>registerStrategyImplementor(Class\<T\>,String,Class\<? extends 
T\>) in StrategySelector has been deprecated and marked for removal |
-| 
`org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity`
 | 194 | `[rawtypes]` found raw type: PersistentProperty |
-| 
`org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentProperty`
 | 155 | `[rawtypes]` found raw type: OneToOne |
-| 
`org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentProperty`
 | 186 | `[rawtypes]` found raw type: OneToOne |
-| `org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher` | 
51 | `[rawtypes]` found raw type: Association |
-| `org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyProvider` | 
32 | `[removal]` CamelCaseToUnderscoresNamingStrategy in 
org.hibernate.boot.model.naming has been deprecated and marked for removal |
-| `org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyProvider` | 
57 | `[removal]` CamelCaseToUnderscoresNamingStrategy in 
org.hibernate.boot.model.naming has been deprecated and marked for removal |
-| `org.grails.orm.hibernate.proxy.HibernateProxyHandler` | 54 | `[rawtypes]` 
found raw type: EntityProxy |
-| `org.grails.orm.hibernate.proxy.HibernateProxyHandler` | 76 | `[rawtypes]` 
found raw type: EntityProxy |
-| `org.grails.orm.hibernate.proxy.HibernateProxyHandler` | 95 | `[rawtypes]` 
found raw type: EntityProxy |
-| `org.grails.orm.hibernate.proxy.HibernateProxyHandler` | 126 | `[rawtypes]` 
found raw type: EntityProxy |
diff --git a/grails-data-hibernate7/HIBERNATE7-GRAILS8-UPGRADE.md 
b/grails-data-hibernate7/HIBERNATE7-GRAILS8-UPGRADE.md
index 26ceec5eeb..851e975b26 100644
--- a/grails-data-hibernate7/HIBERNATE7-GRAILS8-UPGRADE.md
+++ b/grails-data-hibernate7/HIBERNATE7-GRAILS8-UPGRADE.md
@@ -164,18 +164,6 @@ Do **not** drop Hibernate 5.6 support in 8.0.0. Ship both:
 **Priority**: **P2** - SQL injection is OWASP #3. Framework should make the 
safe path the easy path.
 **Effort**: Medium
 
-### 1.4 Static Compilation Coverage Expansion
-
-**Current state in grails-core/src/main**: 45 out of 73 Groovy files (62%) 
have `@CompileStatic` or `@GrailsCompileStatic`.
-
-Without `@CompileStatic`, every Groovy method call goes through dynamic 
dispatch:
-- MetaClass lookup per call
-- No JIT inlining
-- Indy call site caching defeated by metaclass changes (ties into 1.1)
-- GraalVM native image impossible for dynamically-dispatched code
-
-**Required work**:
-1. Audit all `.groovy` files in `src/main` across every module for 
`@CompileStatic` eligibility
 
 ### 2.6 GORM Query Safety Audit
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsNamedStrategyContributor.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsNamedStrategyContributor.java
new file mode 100644
index 0000000000..c404af4194
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsNamedStrategyContributor.java
@@ -0,0 +1,28 @@
+package org.grails.orm.hibernate.cfg;
+
+import org.checkerframework.checker.units.qual.C;
+import org.hibernate.boot.registry.selector.spi.NamedStrategyContributions;
+import org.hibernate.boot.registry.selector.spi.NamedStrategyContributor;
+import org.hibernate.id.IdentifierGenerator;
+import org.hibernate.property.access.spi.PropertyAccessStrategy;
+
+import org.grails.orm.hibernate.access.TraitPropertyAccessStrategy;
+
+public class GrailsNamedStrategyContributor implements 
NamedStrategyContributor {
+
+    @Override
+    public void contributeStrategyImplementations(NamedStrategyContributions 
contributions) {
+        contributions.contributeStrategyImplementor(
+                PropertyAccessStrategy.class,
+                TraitPropertyAccessStrategy.class,
+                "traitProperty"
+        );
+    }
+
+    @Override
+    public void clearStrategyImplementations(NamedStrategyContributions 
contributions) {
+        contributions.removeStrategyImplementor(PropertyAccessStrategy.class
+                , TraitPropertyAccessStrategy.class);
+    }
+
+}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
index 9ae365ab19..b0b389e6b7 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
@@ -32,7 +32,6 @@ import org.grails.orm.hibernate.EventListenerIntegrator;
 import org.grails.orm.hibernate.GrailsSessionContext;
 import org.grails.orm.hibernate.HibernateEventListeners;
 import org.grails.orm.hibernate.MetadataIntegrator;
-import org.grails.orm.hibernate.access.TraitPropertyAccessStrategy;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsDomainBinder;
 import org.hibernate.HibernateException;
 import org.hibernate.MappingException;
@@ -44,14 +43,13 @@ import org.hibernate.boot.registry.StandardServiceRegistry;
 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 import 
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
 import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
-import org.hibernate.boot.registry.selector.spi.StrategySelector;
 import org.hibernate.boot.spi.AdditionalMappingContributor;
 import org.hibernate.cfg.AvailableSettings;
 import org.hibernate.cfg.Configuration;
 import org.hibernate.cfg.Environment;
+import org.hibernate.cfg.JdbcSettings;
 import org.hibernate.context.spi.CurrentSessionContext;
 import org.hibernate.internal.util.config.ConfigurationHelper;
-import org.hibernate.property.access.spi.PropertyAccessStrategy;
 import org.hibernate.service.ServiceRegistry;
 import org.hibernate.service.spi.ServiceRegistryImplementor;
 import org.springframework.beans.BeansException;
@@ -112,7 +110,7 @@ public class HibernateMappingContextConfiguration extends 
Configuration
     Properties properties = getProperties();
 
     if (applicationContext.containsBean(dsName)) {
-      properties.put(Environment.DATASOURCE, 
applicationContext.getBean(dsName));
+      properties.put(JdbcSettings.JAKARTA_NON_JTA_DATASOURCE, 
applicationContext.getBean(dsName));
     }
     properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, 
currentSessionContext.getName());
     properties.put(AvailableSettings.CLASSLOADERS, 
applicationContext.getClassLoader());
@@ -127,7 +125,7 @@ public class HibernateMappingContextConfiguration extends 
Configuration
       ConnectionSource<DataSource, DataSourceSettings> connectionSource) {
     this.dataSourceName = connectionSource.getName();
     DataSource source = connectionSource.getSource();
-    getProperties().put(Environment.DATASOURCE, source);
+    getProperties().put(JdbcSettings.JAKARTA_NON_JTA_DATASOURCE, source);
     getProperties()
         .put(Environment.CURRENT_SESSION_CONTEXT_CLASS, 
GrailsSessionContext.class.getName());
     final ClassLoader contextClassLoader = 
Thread.currentThread().getContextClassLoader();
@@ -295,10 +293,9 @@ public class HibernateMappingContextConfiguration extends 
Configuration
             .applyIntegrator(new MetadataIntegrator())
             .applyClassLoaderService(classLoaderService)
             .build();
-    StrategySelector strategySelector = 
bootstrapServiceRegistry.getService(StrategySelector.class);
 
-    strategySelector.registerStrategyImplementor(
-        PropertyAccessStrategy.class, "traitProperty", 
TraitPropertyAccessStrategy.class);
+
+
 
     SessionFactoryObserver sessionFactoryObserver =
         new SessionFactoryObserver() {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
index 7a36ab44fd..8883252ce3 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
@@ -21,15 +21,15 @@ package org.grails.orm.hibernate.cfg.domainbinding.util;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
 import org.grails.datastore.mapping.core.connections.ConnectionSource;
-import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
 import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
+import org.hibernate.boot.model.naming.PhysicalNamingStrategySnakeCaseImpl;
 
 public class NamingStrategyProvider {
   private final ConcurrentHashMap<String, PhysicalNamingStrategy> 
physicalProviderMap;
 
   public NamingStrategyProvider() {
     physicalProviderMap = new ConcurrentHashMap<>();
-    physicalProviderMap.put(ConnectionSource.DEFAULT, new 
CamelCaseToUnderscoresNamingStrategy());
+    physicalProviderMap.put(ConnectionSource.DEFAULT, new 
PhysicalNamingStrategySnakeCaseImpl());
   }
 
   /**
@@ -54,7 +54,7 @@ public class NamingStrategyProvider {
     if (strategyInstance instanceof PhysicalNamingStrategy physicalStrategy) {
       physicalProviderMap.put(datasourceName, physicalStrategy);
     } else {
-      physicalProviderMap.put(datasourceName, new 
CamelCaseToUnderscoresNamingStrategy());
+      physicalProviderMap.put(datasourceName, new 
PhysicalNamingStrategySnakeCaseImpl());
     }
   }
 
@@ -78,7 +78,7 @@ public class NamingStrategyProvider {
 
   public PhysicalNamingStrategy getPhysicalNamingStrategy(String 
sessionFactoryBeanName) {
     String key = getKey(sessionFactoryBeanName);
-    physicalProviderMap.putIfAbsent(key, new 
CamelCaseToUnderscoresNamingStrategy());
+    physicalProviderMap.putIfAbsent(key, new 
PhysicalNamingStrategySnakeCaseImpl());
     return physicalProviderMap.get(key);
   }
 
diff --git 
a/grails-data-hibernate7/core/src/main/resources/META-INF/services/org.hibernate.boot.registry.selector.spi.NamedStrategyContributor
 
b/grails-data-hibernate7/core/src/main/resources/META-INF/services/org.hibernate.boot.registry.selector.spi.NamedStrategyContributor
new file mode 100644
index 0000000000..b3bece347f
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/resources/META-INF/services/org.hibernate.boot.registry.selector.spi.NamedStrategyContributor
@@ -0,0 +1 @@
+org.grails.orm.hibernate.cfg.GrailsNamedStrategyContributor
\ No newline at end of file
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyProviderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyProviderSpec.groovy
index a132f12823..83c1e036e8 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyProviderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyProviderSpec.groovy
@@ -1,7 +1,7 @@
 package org.grails.orm.hibernate.cfg.domainbinding
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
-import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
+import org.hibernate.boot.model.naming.PhysicalNamingStrategySnakeCaseImpl
 import org.hibernate.boot.model.naming.PhysicalNamingStrategy
 
 import org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyProvider
@@ -14,7 +14,7 @@ class NamingStrategyProviderSpec extends 
HibernateGormDatastoreSpec {
         def strategy = provider.getPhysicalNamingStrategy("sessionFactory")
 
         then:
-        strategy instanceof CamelCaseToUnderscoresNamingStrategy
+        strategy instanceof PhysicalNamingStrategySnakeCaseImpl
     }
 
     void "Test configureNamingStrategy with null strategy throws exception"() {
@@ -73,7 +73,7 @@ class NamingStrategyProviderSpec extends 
HibernateGormDatastoreSpec {
         def strategy = provider.getPhysicalNamingStrategy("sessionFactory")
 
         then:
-        strategy instanceof CamelCaseToUnderscoresNamingStrategy
+        strategy instanceof PhysicalNamingStrategySnakeCaseImpl
     }
 
     void "Test getPhysicalNamingStrategy with custom session factory"() {

Reply via email to