Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

672
Vistas
Spring R2DBC DatabaseClient.as(…)

En mi aplicación spring-boot 2.3, tengo un método de datos simple usando DatabaseClient :

 fun getCurrentTime(): Mono<LocalDateTime> = databaseClient .execute("SELECT NOW()") .asType<LocalDateTime>() .fetch() .first() }

Con spring-boot 2.4 (y spring 5.3 y spring-data-r2dbc 1.2), org.springframework.data.r2dbc.core.DatabaseClient de spring-data-r2dbc está obsoleto en favor de org.springframework.r2dbc.core.DatabaseClient de spring-r2dbc, que tiene una API diferente.

Adaptar eso es bastante sencillo, con la excepción de la extensión asType , que no forma parte de las nuevas DatabaseClientExtensions.

 fun getCurrentTime(): Mono<LocalDateTime> = databaseClient .sql("SELECT NOW()") .map { row: Row -> row.get(0, LocalDateTime::class.java)!! } .one()

¿Están esas extensiones en otro lugar o cómo puedo convertir usando un parámetro de tipo cosificado?

over 4 years ago · Hanz Gallego
1 Respuestas
Responde la pregunta

0

TL;DR

No hay API as(Class) después de la migración a Spring R2DBC.

un poco de fondo

DatabaseClient comenzó su viaje en el proyecto experimental Spring Data R2DBC, probando varios enfoques. Uno de ellos evaluó qué tan cerca se podrían unir una API de SQL textual y una API de mapeo de objetos. DatabaseClient en Spring Data expuso varios métodos API como select().from("table").as(targetType) .

Resultó que esta funcionalidad es útil pero presenta ciertas limitaciones porque cuanto más una API entra en una entidad o incluso en una dirección orientada a agregados, más compleja se vuelve la API real y, en algún punto, los límites entre el mapeo de objetos simples y las entidades (por ejemplo , devoluciones de llamada del ciclo de vida de la entidad) desenfoque.

Decidimos presentar R2dbcEntityTemplate como una abstracción para todas las operaciones vinculadas a entidades para admitir los casos de uso más comunes. Al observar la API fluida que estaba previamente en su lugar, todavía hay una brecha para todos los casos de uso que requieren consultas SQL ad-hoc, agregaciones, llamadas a funciones, etc.

Mientras tanto, el proyecto resultó útil y hemos identificado clases de soporte básico que podrían migrarse a Spring Framework 5.3, por lo que Spring Data R2DBC 1.2 podría basarse en Spring R2DBC.

No pudimos idear un enfoque adecuado al migrar el código. Para ser justos, DatabaseClient ofrece casi el mismo nivel de abstracción (a excepción de los procedimientos almacenados) que NamedParameterJdbcTemplate . Spring JDBC se envía claramente con varias implementaciones de RowMapper , como SingleColumnRowMapper o DataClassRowMapper , que también serían útiles para Spring R2DBC.

Pensamientos finales

Desde la perspectiva del usuario, as(…) hay mucha demanda y debemos investigar cómo podría surgir esta funcionalidad (o una variante de la misma).

over 4 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda