Included a detailed migration guide highlighting breaking changes from `1.0.0-rc-4` to `1.0.0`, including updates to UUID handling, transaction manager refactoring, R2DBC API adjustments, and SQLite JSONB automation.
3.2 KiB
Hier ist eine Zusammenfassung der spezifischen Breaking Changes beim Upgrade von Exposed 1.0.0-rc-4 auf die stabile Version 1.0.0 im Markdown-Format:
Breaking Changes: JetBrains Exposed 1.0.0-rc-4 -> 1.0.0
Dieses Dokument fasst die technischen Änderungen zusammen, die beim Übergang vom letzten Release Candidate (rc-4) zur stabilen Version 1.0.0 zu beachten sind.
1. Überarbeitung der UUID-Unterstützung (Kotlin Multiplatform)
Aufgrund der Einführung der nativen kotlin.uuid.Uuid mussten bestehende Klassen, die auf java.util.UUID basieren,
verschoben werden, um Namenskollisionen zu vermeiden.
-
Paket-Migration: Bestehende UUID-Klassen wurden in ein
.java-Subpaket verschoben: -
org.jetbrains.exposed.v1.core.dao.id.UUIDTable->...id.java.UUIDTable -
org.jetbrains.exposed.v1.core.UUIDColumnType->...core.java.UUIDColumnType -
org.jetbrains.exposed.v1.dao.UUIDEntity->...dao.java.UUIDEntity -
Methoden-Änderung: Die Standardmethode
Table.uuid()akzeptiert nun ausschließlichkotlin.uuid.Uuid. -
Migrationspfad: Für die Weiterverwendung von
java.util.UUIDmuss stattdessen die neue Extension-FunktionTable.javaUUID()genutzt werden.
2. Refactoring des Transaction Managers
Die Typisierung der Transaction Manager wurde spezifiziert, um besser zwischen JDBC und R2DBC zu unterscheiden.
-
Spezifische Rückgabetypen:
Database.transactionManagerundR2dbcDatabase.transactionManagergeben nun Instanzen vonJdbcTransactionManagerbzw.R2dbcTransactionManagerzurück (statt des generischenTransactionManager). -
Entfernung von APIs: Die Methode
TransactionManagerApi.currentOrNull()wurde entfernt. -
Ersatz: Nutzen Sie stattdessen die Extension-Funktionen
JdbcTransactionManager.currentOrNull()/R2dbcTransactionManager.currentOrNull()oder die statische MethodeTransactionManager.currentOrNull().
3. R2DBC API Bereinigungen
Um die API näher an die zugrunde liegenden Treiber-Spezifikationen (io.r2dbc.spi) zu bringen, wurden ungenutzte Methoden entfernt.
-
R2dbcPreparedStatementApi: Die Methoden
closeIfPossible()undcancel()wurden entfernt, da sie in der R2DBC-Spi keine Entsprechung finden. -
Methoden-Umbenennung:
R2dbcTransaction.closeExecutedStatements()wurde in.clearExecutedStatements()umbenannt. Diese Methode ist nun nicht mehr suspendierbar (non-suspending).
4. SQLite & JSONB Automatisierung
Das Handling von JSONB-Spalten in SQLite wurde vereinheitlicht.
-
Automatisches Wrapping: Bei der Verwendung von
jsonb()werden Spalten in derSELECT-Klausel nun automatisch in die SQL-FunktionJSON()eingepackt, um die Lesbarkeit zu verbessern. -
Konfiguration: Dieses Verhalten kann über den Parameter
castToJsonFormat=falsedeaktiviert werden. -
Core-Interface: Das Interface
JsonColumnMarkerinexposed-corewurde um die EigenschaftneedsBinaryFormatCasterweitert.
5. Sonstige Anpassungen
-
Logging-Level: Die Protokollierung für Transaction-Retry-Verzögerungen und Rollback-Fehler wurde von
WARNaufDEBUGherabgestuft. -
Transaktions-ID: Das Feld
Transaction.idwurde endgültig inTransaction.transactionIdumbenannt, um Shadowing-Probleme mit Benutzer-Code zu vermeiden.