borinquenkid opened a new pull request, #16570:
URL: https://github.com/apache/grails-core/pull/16570

   Last PR of the native domain binding stack. 6 commits, 262 files, **+3,488 / 
โˆ’18,648**.
   
   ## What
   
   The classic `GrailsDomainBinder` and everything that existed only to 
assemble Hibernate's boot model by hand are deleted. Native binding is the only 
binding of GORM for Hibernate 7.
   
   ## Changes
   
   * **Deleted** (65 main files in `grails-data-hibernate7/core`): 
`GrailsDomainBinder`, the `binder`, `secondpass` and `collectionType` packages 
and their utilities, the `hibernate.generatedDomainClasses` switch and the 
classic code path in `HibernateMappingContextConfiguration`, 
`HibernateDatastore` and the test harness.
   * **Kept and moved**: the four column binders the generator reuses 
(`cfg/domainbinding/column/`), `ManyToManyOwnerValidator` (`jpa/`); the one 
piece of `GrailsDomainBinder` the native path needed is extracted as 
`GormMappingContributor` (the `AdditionalMappingContributor`). The `hibernate` 
metamodel package is untouched.
   * **Compatibility**: an application that still sets 
`hibernate.generatedDomainClasses`, with either value, boots natively and logs 
one WARN naming the setting; the configuration metadata keeps the key as 
deprecated at level `error` so IDEs flag it.
   * **Tests**: the 27 both-modes specs state the classic facts they compared 
against as literal expectations (captured from runs); about 60 unit specs of 
the deleted classes are gone, their `@Entity` fixtures preserved so the oracle 
keys do not change; the 94 duplicate "widened" subclasses that only existed to 
run their parents natively are gone (test count 4,597 โ†’ 4,104 for that reason).
   * **Frozen classic oracle**: FROZEN is the only comparison mode. A new 
fixture is recorded from a native boot with 
`-Pgrails.test.recordClassicOracle=true`; native-recorded sections are 
reported, not compared, by the generator differential (there is no classic fact 
to compare them with). Documented in the module README.
   * **Docs**: the manual chapter now describes native binding as the only 
binding and the classic binding of Grails 8 as what changed; configuration 
reference (key removed, ignored with a warning), migration checklist, upgrade 
notes ยง1.3โ€“1.5, the Hibernate developer skill.
   
   ## Verification
   
   At the tip, uncached: core 4,104 tests / 0 failures; generator differential 
0 mismatches (1,169 entities, 3,381 properties); DDL differential 85 known, 0 
unknown, 0 refused; dbmigration-core 40, dbmigration 109 + 93 CLI, plugin 39 + 
2, spring-boot 2; 22 example apps' unit tests and 19 integration suites green 
except `app1`'s 21 pre-existing GSP failures (same set and counts as before the 
stack); `codeStyle` clean; `rat`'s 69 unapproved files are the ones already 
present at the base, in modules this stack never touched.
   
   ## Known follow-up
   
   An inverse `hasMany` on an entity whose composite identifier is not declared 
in name order loads empty on `8.0.x` as well (#16565); native binding is not 
affected by the classic linker, but the issue is tracked separately.
   
   ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to