Proyecciones: Recuperar datos con Spring/Boot con mejor rendimiento (Spring Data Projections)

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ม.ค. 2025

ความคิดเห็น • 44

  • @ramosespann6496
    @ramosespann6496 2 ปีที่แล้ว +2

    Qué diferencia habría entre Projections y DTOs?

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว +7

      Hola, la proyección es un patrón de acceso a datos sobre un un sistema de persistencia y el DTO es para transferencia entre aplicaciones, podemos decir que la mejor forma de armar un DTO cuyos datos vengan de una base de datos es mediante una proyección 😃

    • @fen1x521
      @fen1x521 7 หลายเดือนก่อน

      @@SACAViXTech Hola buenas! una pregunta sobre tu respuesta. Utilizaríamos DTO para manejar la request del cliente y Proyecciones para el acceso a datos?

  • @alexandermolina2502
    @alexandermolina2502 2 ปีที่แล้ว +2

    Primeramente agradecerte por el contenido de alto valor que siempre nos compartes, vendría muy bien el video de consultas nativas que comentas y alguno de Spring Security también. Un saludo y agradecido por el contenido.

  • @GROOVETECHSETS
    @GROOVETECHSETS 2 ปีที่แล้ว +1

    Aquí tienes un nuevo suscriptor. Buen contenido y muy bien explicado, gracias!

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว +2

      Gracias, bienvenido 👍

  • @XavierRomeroLopez
    @XavierRomeroLopez ปีที่แล้ว

    Fantástico he aprendido algo mas sobre Spring Boot muchas gracias

  • @ivancalisaya4218
    @ivancalisaya4218 ปีที่แล้ว

    Excelente video, muy bueno,
    Saludos, tengo una consulta que me dejó con algo de intriga, en el minuto 24:32 mencionaste que NO se debe hacer así, soy nuevo en Java, por favor podrías explicar un poco sobre cómo sería la manera correcta?
    O si ya tienes un vídeo explicativo mencionarlo para ir a verlo?
    Muchas gracias y muy buen video, sigue así! 👍😀

  • @cesaresp9585
    @cesaresp9585 2 ปีที่แล้ว

    Justo lo apliqué en mi trabajo, redujé bastantes segundos de carga. Solo que lo hacía con Object y traia un arrays de objects y los llevaba a un tipo de dato; esta manera de interfaz cerrada es más fácil y mejor: Muchas gracias!

  • @Noureddineghazi
    @Noureddineghazi 2 ปีที่แล้ว

    muy buen video todo explicado con detalles , me ha servido para hacer un proyecto que estoy haciendo, Muchas gracias !

  • @maurya.5193
    @maurya.5193 2 ปีที่แล้ว

    Te ganaste mi corazón y un nuevo suscriptor :3

  • @SIULVERPRO
    @SIULVERPRO 2 ปีที่แล้ว

    Excelente video muchas Gracias, de tadas estas posibilidades tienen un problema muy similar y es el echo de mappear campo a campo entre el dto y la entity, cuando son clases muy grande y solo quieres obviar en el dto 1 o 2 campo en el dto del entity parese un trabajo similar al crear la clase o el constructor total a mano he buscado formar de minimizar este trabajo ya que desarrollo una api muy grande con grandes volúmenes de información

  • @mayikx
    @mayikx 2 ปีที่แล้ว +1

    Amigo mil gracias por tu valioso tiempo haciéndo estos días. Amigo como puedes paginar grandes conjuntos de datos de un query complejo?.

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว

      Hola, si hay que hacerlo con Pageable de Spring, funciona igual con consultas nativas. Fijate en este tutorial: medium.com/@sindepal/spring-data-jpa-query-and-pageable-15f8c3e7fe4e, la opción 7, la clave es countQuery

  • @tonycode9505
    @tonycode9505 2 ปีที่แล้ว

    excelente video muy bien explicado

  • @arceliomontezuma3458
    @arceliomontezuma3458 2 ปีที่แล้ว

    Muy buen video, información y excelente explicación

  • @ThePomelo09
    @ThePomelo09 2 ปีที่แล้ว

    Muy bueno muchas gracias !

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว

      Gracias a tí, un saludo colega 👍

  • @sosafloresluisangel5676
    @sosafloresluisangel5676 ปีที่แล้ว

    Muchas gracias por todo el conocimiento que compartes con todos, estoy implementando proyecciones en una api rest solo que tengo algunas dudas de cuales son las convenciones o buenas practicas cuando uno usa proyecciones por ejemplo, las proyecciones basadas en interfaces se pueden retornar en un controlador al cliente? o se suele usar para tener mejores rendimiento en mis consultas cuya información no necesito completa y montar mi proyección de interface en un dto para mandarlo al cliente?, en situaciones donde necesito recuperar muy poca información de 3 o mas entidades que estan relacionadas por ejemplo suele ser mas conveniente montar un dto manualmente o montarlo basado con la información que me pudiera entregar una proyección basada en interface anidadas, Saludos :)

  • @dariofernando2007
    @dariofernando2007 2 ปีที่แล้ว

    Buen video Yoa! 👌

  • @CeratiGilmour
    @CeratiGilmour ปีที่แล้ว

    Una consulta mapstruct en que momento entraría en estos caos? gracias de antemano

  • @anisleydispereiradelarosa3983
    @anisleydispereiradelarosa3983 2 ปีที่แล้ว

    Genial

  • @aaronzuniga1620
    @aaronzuniga1620 2 ปีที่แล้ว +1

    He aprendido demasiado sobre spring con tus videos, te agradezco mucho. Ahora tengo una duda, en rendimiento cuál es la mejor opción o en ese aspecto todas las formas son iguales?

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว +2

      Hola, son similares en cuanto a performance, siempre que se pueda usa interfaz de proyección cerrada.

  • @nuriselpalmaperez9163
    @nuriselpalmaperez9163 2 ปีที่แล้ว +1

    Excelente video! Una duda, cada tipo de proyección puede ser aplicado a un caso en particular, o queda a elección del desarrollador cuál usar? Sobre realizar un video sobre consultas nativas en Spring Boot, considero que nos sería de mucha utilidad. Me gustaría un ejemplo que explique cómo se construyen las entidades para dos tablas con relación de muchos a muchos.

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว +2

      Hola, creo la mas sencilla es la de interfaz de proyección cerrada, siempre uso esas al menos. Andamos armando un curso de spring boot, trataremos el tema de la consultas nativas ahi.

  • @rodrigoch2291
    @rodrigoch2291 2 ปีที่แล้ว

    Hola Yoandy, estupendo video... ¿es recomendable siempre hacer de esta forma las consultas o solo cuando se tenga casos en las que se deban usar DTO? porque hasta ahora no he usado proyecciones

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว

      Es siempre que se pueda por un tema de performance evitar un findById o un select * recomendado, ahora sí la entidad tiene pocos campos no es necesario complicarse la vida

  • @LuisMartinez-ry8ot
    @LuisMartinez-ry8ot 2 ปีที่แล้ว

    Hola a todos, muy buena explicacion, sin embargo, utilice la de la Tuple y me dice que el Query no retorna un unico resultado

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว

      Hola Luis, si tienes más de una posibilidad usa algo derivado de Collection, igual te recomiendo la basada en interfaces es más simple y da inmutabilidad que es valioso.

  • @brandonrestrepo1393
    @brandonrestrepo1393 2 ปีที่แล้ว

    Excelente Video, te ganaste un nuevo suscriptor, una consulta, en caso tal que el join me retorne mas hijos, y quiera acomodarla en un objecto JSON como una lista, tambien lo podria hacer por proyeccion cerrada con la interface?, muchas gracias!!!

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว +1

      Hola, gracias por tu comentario ♥️, si funciona de igual manera 👍

  • @oneldeltororodriguez8133
    @oneldeltororodriguez8133 2 ปีที่แล้ว

    Muy buen video. pero como puedo acceder a los codigos fuentes que desarrollas para los videos. muchas gracias

    • @SACAViXTech
      @SACAViXTech  2 ปีที่แล้ว

      Hola Onel, ese en particular acá: github.com/yoandypv/users-api. En mi repo de GitHub (yoandypv) están todos.

  • @rogercardona4160
    @rogercardona4160 ปีที่แล้ว

    Yo no entiendo por que en mi caso, cuando estoy usando NameQuery, no me deja usar resultSetMapping, dice "Cannot find symbol" y cuando estoy armando el NameQuery me pide solo dos valores, name y query, por que es esto? es por la version?

  • @aamb_c133
    @aamb_c133 ปีที่แล้ว

    buenas tengo entendido hacer este tipo de consultas asi: "SELECT " +
    " P.NAME as name," +
    " P.PHONE_NUMBER AS phoneNumber, " +
    " A.STREET AS street " +
    " FROM PERSON P " +
    " INNER JOIN ADDRESS A ON A.ID = P.ADDRESS_ID " +
    " WHERE P.ID = :id", nativeQuery = true)
    o se deben deben hacer asi cuando se usan proyecciones?

    • @SACAViXTech
      @SACAViXTech  ปีที่แล้ว

      Claro el resultado de esa consulta es un subset de los datos de la base, entonces es una proyección de los mismos que necesitas mappear a un DTO. Entonces eso es proyección 🫡

    • @aamb_c133
      @aamb_c133 ปีที่แล้ว

      @@SACAViXTech Disculpe no redacte bien la pregunta lo que quiero saber es
      si el mejor usar un Prepared statement para la consulta

    • @SACAViXTech
      @SACAViXTech  ปีที่แล้ว

      @@aamb_c133 no variará demasiado el performance y con Jpa native que es queda más legible , fácil de entender y mantener. Yo usaría jpa native query

    • @aamb_c133
      @aamb_c133 ปีที่แล้ว +1

      @@SACAViXTech muchas gracias por la aclaración

  • @RochaNahuel
    @RochaNahuel 11 หลายเดือนก่อน +1

    La verdad no le veo de gran utilidad o que te ahorre mucho laburo respecto a otro tipo de enfoques

    • @SACAViXTech
      @SACAViXTech  11 หลายเดือนก่อน

      Hola, trabajo no ahorras, eso seguro, de hecho lleva más trabajo, la ganancia está en el rendimiento de tu aplicación y en el cuidado de la base de datos cuando hay mucho tráfico, en apps pequeñas no tiene mucho sentido.