# The Java EE 7 Tutorial

# 43 Creating Fetch Plans with Entity Graphs

This chapter explains how to use entity graphs to create fetch plans for Java Persistence API operations and queries.

Entity graphs are templates for a particular Persistence query or operation. They are used when creating fetch plans, or groups of persistent fields that are retrieved at the same time. Application developers use fetch plans to group together related persistent fields to improve runtime performance.

By default, entity fields or properties are fetched lazily. Developers specify fields or properties as part of a fetch plan, and the persistence provider will fetch them eagerly.

For example, an email application that stores messages as `EmailMessage` entities prioritizes fetching some fields over others. The sender, subject, and date will be viewed the most often, in mailbox views and when the message is displayed. The `EmailMessage` entity has a collection of related `EmailAttachment` entities. For performance reasons the attachments should not be fetched until they are needed, but the file names of the attachment are important. A developer working on this application might make a fetch plan that eagerly fetches the important fields from `EmailMessage` and `EmailAttachment` while fetching the lower priority data lazily.

The following topics are addressed here:

- Entity Graph Basics

- Using Named Entity Graphs

- Using Entity Graphs in Query Operations