---
title: Lazy Loading
category: Idiom
language: es
tag:
 - Performance
---

## Propósito
La carga diferida (*Lazy loading* en inglés) es un patrón de diseño comúnmente usado para diferir
la inicialización de un objeto hasta el punto en que se necesita. Puede
contribuir a la eficiencia en la operación del programa si se usa de manera adecuada.

## Diagrama de clases
![alt text](./etc/lazy-loading.png "Lazy Loading")

## Aplicabilidad
Utilice el modelo de Carga Diferida cuando:

* La carga anticipada es costosa o el objeto a cargar podría no ser necesario en absoluto

## Ejemplos del mundo real

* Anotaciones JPA `@OneToOne`, `@OneToMany`, `@ManyToOne`, `@ManyToMany` y `fetch = FetchType.LAZY`

## Créditos

* [J2EE Design Patterns](https://www.amazon.com/gp/product/0596004273/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0596004273&linkCode=as2&tag=javadesignpat-20&linkId=48d37c67fb3d845b802fa9b619ad8f31)
* [Patterns of Enterprise Application Architecture](https://www.amazon.com/gp/product/0321127420/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0321127420&linkCode=as2&tag=javadesignpat-20&linkId=d9f7d37b032ca6e96253562d075fcc4a)
