| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | layout: pattern | 
					
						
							|  |  |  | title: Lazy Loading | 
					
						
							|  |  |  | folder: lazy-loading | 
					
						
							| 
									
										
										
										
											2015-08-15 18:03:05 +02:00
										 |  |  | permalink: /patterns/lazy-loading/ | 
					
						
							| 
									
										
										
										
											2019-12-13 21:09:28 +02:00
										 |  |  | categories: Idiom | 
					
						
							| 
									
										
										
										
											2015-12-28 15:52:44 +02:00
										 |  |  | tags: | 
					
						
							| 
									
										
										
										
											2015-12-28 16:07:43 +02:00
										 |  |  |  - Performance | 
					
						
							| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-03 21:14:30 +01:00
										 |  |  | ## Intent
 | 
					
						
							|  |  |  | Lazy loading is a design pattern commonly used to defer | 
					
						
							| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  | initialization of an object until the point at which it is needed. It can | 
					
						
							|  |  |  | contribute to efficiency in the program's operation if properly and | 
					
						
							|  |  |  | appropriately used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-07 20:01:13 +02:00
										 |  |  | ## Class diagram
 | 
					
						
							| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  |  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-03 21:14:30 +01:00
										 |  |  | ## Applicability
 | 
					
						
							|  |  |  | Use the Lazy Loading idiom when | 
					
						
							| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | * eager loading is expensive or the object to be loaded might not be needed at all | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-03 21:14:30 +01:00
										 |  |  | ## Real world examples
 | 
					
						
							| 
									
										
										
										
											2015-08-13 23:54:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-15 18:03:05 +02:00
										 |  |  | * JPA annotations @OneToOne, @OneToMany, @ManyToOne, @ManyToMany and fetch = FetchType.LAZY | 
					
						
							| 
									
										
										
										
											2016-01-27 12:55:59 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-16 08:52:16 +03:00
										 |  |  | ## Credits
 | 
					
						
							| 
									
										
										
										
											2016-04-15 08:38:08 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-06 13:31:07 +03:00
										 |  |  | * [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) | 
					
						
							| 
									
										
										
										
											2020-07-07 21:19:14 +03:00
										 |  |  | * [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) |