### Dynamic Fetch Plan

Specify one or more named fetch plan. Separate multiple names with comma, e.g.

myPlanA, mYPlanB

There are two pre-defined plans named: default and all. The default plan that fetches all properties of basic type (i.e. `String, int, Date` etc.) and uni-cardinality relations, are active by default. As the plans are additive, to exclude the default plan, you can specify

myPlanA, -default

Fetch Plan determines which properties will be fetched when an entity instance is accessed from the data store. A plan can traverse relationship path into other entities at arbitrary depth. By default, when an entity is fetched, all properties of basic type (i.e. `String, int, Date` etc.) and uni-cardinality relations are fetched.
JPA specification allows `@Fetch.LAZY` and `@Fetch.EAGER` annotation on persistent properties to control fetch behavior. But only statically i.e. at class definition.

OpenJPA, on the other hand, provides a far richer syntax and semantics to its user to define the properties to be fetched through its dynamic Fetch Plan facility. And, more importantly, these fetch plans can be modified dynamically per use case basis.

To learn more aboout Fetch Plan, Refer OpenJPA documentation.