Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

DUDA SOBRE LA SECCION 3 DE JPA CONSULTA AVANDAZADA

venia todo de 10 en el curso per la 3 seccion entendiendo lazy /eager.... aparecieron clases y anotaciones q en clases pasada no estaba,quisiera saber donde puedo descargar esa documentation para aprender a usarla o donde puedo ver como usarla.

3 respuestas

Hola,

Sí, las anotaciones que se mencionan en esta sección, como @ManyToOne, @OneToOne, @OneToMany y @ManyToMany, son parte de la especificación de JPA (Java Persistence API) y se utilizan para mapear las relaciones entre las entidades en una base de datos.

La estrategia de cargamento (fetching strategy) define cómo JPA carga las relaciones entre las entidades. Hay dos tipos de estrategias de cargamento: Eager y Lazy.

  • Eager: JPA carga todas las relaciones de una entidad inmediatamente después de cargar la entidad. Es decir, si tienes una entidad "Pedido" con una relación @ManyToOne a la entidad "Cliente", al cargar un "Pedido", JPA también cargará el "Cliente" relacionado en la misma consulta. Esta es la estrategia por defecto para las relaciones @OneToOne y @ManyToOne.

  • Lazy: JPA carga las relaciones de una entidad solo cuando se accede a ellas por primera vez. Es decir, si tienes una entidad "Pedido" con una relación @OneToMany a la entidad "Item", al cargar un "Pedido", JPA no cargará los "Items" relacionados hasta que intentes acceder a ellos (por ejemplo, llamando al método getItems() del "Pedido"). Esta es la estrategia por defecto para las relaciones @OneToMany y @ManyToMany.

Puedes cambiar la estrategia de cargamento por defecto utilizando el atributo 'fetch' en la anotación de la relación. Por ejemplo, si quieres que la relación @ManyToOne a "Cliente" en la entidad "Pedido" se cargue de forma Lazy, puedes hacerlo así:

@ManyToOne(fetch = FetchType.LAZY)
private Cliente cliente;

Y para aprender más sobre estas anotaciones y estrategias de cargamento, te recomendaríael artículo Entendiendo el Lazy y el Eager Load de JPA.

Espero haber aclarado tus dudas y te deseo mucho éxito en tu aprendizaje de Java y JPA. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Estudiante, justo acabo de entrar en esta clase y estuve buscando soluciones y lo que hice fue lo siguiente, ojalá te sirva;

  1. Descargas el proyecto en "01 Proyecto del aula anterior" del aula "03 Performance de consultas"
    1. Lo descomprimes y vas a la carpeta que se encuentra en "carpeta-donde-descomprimiste-el-proyecto-descargado\JPA-con-hibernate-Alura-II-stage_2\src\main\java\com\latam\alura\tienda\prueba" y ahí se encuentran las clases que usó el profesor
      1. Importas a tu proyecto la clase LoadRecords.java y PruebaDesempenho.java en la carpeta com.latam,alura.tienda.prueba de tu proyecto (esto con la opcion Import de Eclipse)
      2. Vas a la carpeta "carpeta-donde-descomprimiste-el-proyecto-descargado\JPA-con-hibernate-Alura-II-stage_2\src\main\main\resources\utils" e importas los 3 archivos .txt a la carpeta src.main.resources.utils de tu proyecto (si no se encuentra la creas con Eclipse e incluso los puedes copiar con el explorador de archivos), recuerda no cambiar el nombre de los archivos
        1. En la clase LoadRecords tienes que modificar la ruta de acceso a la carpeta utils de tu proyecto (no olvides usar doble barra invertida "\" en la ruta) en el método readFile() quedando así:
private static List<String> readFile(String type) throws FileNotFoundException {
        File file = new File("E:\\Desktop\\java-backend\\tienda-database\\src\\main\\resources\\utils\\" + type + ".txt");
        //		En mi caso mi proyecto está alojado en la unidad "E:" en la carpeta "Desktop\java-backend\ " por ello la ruta queda así
        Scanner scan = new Scanner(file);
        List<String> pedido = new ArrayList<>();
        while (scan.hasNextLine()) {
            pedido.add(scan.nextLine());
        }
        scan.close();
        return pedido;
    }

Y listo, en mi caso solo quedó corregir los nombres de clases y métodos que estaban distintos en mi proyecto

Hola Jose Manuel Casarez Rodriguez y Estdiante. Me fue muy util esta informacion, gracias