|
|
(12 intermediate revisions by the same user not shown) |
Line 8: |
Line 8: |
| * [http://www.eclipse.org/eclipselink/api/latest/javax/persistence/FetchType.html FetchType]}} | | * [http://www.eclipse.org/eclipselink/api/latest/javax/persistence/FetchType.html FetchType]}} |
| | | |
− | =Lazy Basics= | + | =Lazy Loading= |
| | | |
| JPA specifies that lazy loading is a hint to the persistence provider that data should be fetched lazily when it is first accessed, if possible. | | JPA specifies that lazy loading is a hint to the persistence provider that data should be fetched lazily when it is first accessed, if possible. |
Line 14: |
Line 14: |
| If you are developing your application in a Java EE environment, you only have to set fetch to <tt>javax.persistence.FetchType.LAZY</tt>, and EclipseLink persistence provider will supply all the necessary functionality. | | If you are developing your application in a Java EE environment, you only have to set fetch to <tt>javax.persistence.FetchType.LAZY</tt>, and EclipseLink persistence provider will supply all the necessary functionality. |
| | | |
− | When using a [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToOne|one-to-one]] or [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@ManyToOne|many-to-one]] mapping in a Java SE environment, to configure EclipseLink JPA to perform lazy loading when the <tt>fetch</tt> attribute is set to <tt>FetchType.LAZY</tt>, configure either dynamic or static weaving. | + | When using a one-to-one or many-to-one mapping in a Java SE environment, to configure EclipseLink JPA to perform lazy loading when the <tt>fetch</tt> attribute is set to <tt>FetchType.LAZY</tt>, configure either dynamic or static weaving. |
| | | |
− | When using a [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToOne|one-to-one]] or [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@ManyToOne|many-to-one]] mapping in a Java SE environment that does not permit the use of <tt>-javaagent</tt> on the JVM command line, to configure EclipseLink JPA to perform lazy loading when annotation attribute <tt>fetch</tt> is set to <tt>javax.persistence.FetchType.LAZY</tt>, you can use static weaving. | + | When using a one-to-one or many-to-one mapping in a Java SE environment that does not permit the use of <tt>-javaagent</tt> on the JVM command line, to configure EclipseLink JPA to perform lazy loading when annotation attribute <tt>fetch</tt> is set to <tt>javax.persistence.FetchType.LAZY</tt>, you can use static weaving. |
− | | + | |
− | The [[#Table 19-33|EclipseLink JPA Support for Lazy Loading by Mapping Type]] table lists EclipseLink JPA support for lazy loading by mapping type.
| + | |
| | | |
| + | <!-- |
| For more information, see the following: | | For more information, see the following: |
| * [[#How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent|How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent]] | | * [[#How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent|How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent]] |
Line 25: |
Line 24: |
| * [[#How to Disable Weaving Using EclipseLink Persistence Unit Properties|How to Disable Weaving Using EclipseLink Persistence Unit Properties]] | | * [[#How to Disable Weaving Using EclipseLink Persistence Unit Properties|How to Disable Weaving Using EclipseLink Persistence Unit Properties]] |
| * [[#What You May Need to Know About Weaving JPA Entities|What You May Need to Know About Weaving JPA Entities]] | | * [[#What You May Need to Know About Weaving JPA Entities|What You May Need to Know About Weaving JPA Entities]] |
− | | + | --> |
− | | + | |
− | <span id="Table 19-33"></span>
| + | |
− | ''''' EclipseLink JPA Support for Lazy Loading by Mapping Type'''''
| + | |
− | | + | |
− | {| class="RuleFormalWideMax" dir="ltr" title="EclipseLink JPA Support for Lazy Loading by Mapping Type" summary="This table lists EclipseLink JPA mapping support for lazy loading by mapping type for Java EE (in container) and Java SE (outside of container) applications." width="100%" border="1" frame="border" rules="all" cellpadding="3" frame="border" rules="all"
| + | |
− | |- align="left" valign="top"
| + | |
− | ! id="r1c1-t52" align="left" valign="bottom" | '''Mapping'''
| + | |
− | ! id="r1c2-t52" align="left" valign="bottom" | '''Java EE''' <sup> 1 </sup>
| + | |
− | ! id="r1c3-t52" align="left" valign="bottom" | '''Java SE'''
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r2c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@ManyToMany|many-to-many]]
| + | |
− | | headers="r2c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | | headers="r2c1-t52 r1c3-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r3c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToMany|one-to-many]]
| + | |
− | | headers="r3c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | | headers="r3c1-t52 r1c3-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r4c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToOne|one-to-one]]
| + | |
− | | headers="r4c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt>JPA%20(ELUG)#@ManyToMany|many-to-many]]
| + | |
− | | headers="r2c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | | headers="r2c1-t52 r1c3-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r3c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToMany|one-to-many]]
| + | |
− | | headers="r3c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | | headers="r3c1-t52 r1c3-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt> (default).
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r4c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@OneToOne|one-to-one]]
| + | |
− | | headers="r4c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt>.
| + | |
− | | headers="r4c1-t52 r1c3-t52" align="left" |
| + | |
− | By default, EclipseLink JPA ignores the <tt>fetch</tt> attribute and default javax.persistence.<tt>FetchType.EAGER</tt> applies.
| + | |
− | | + | |
− | To configure EclipseLink JPA to perform lazy loading when the <tt>fetch</tt> attribute set to <tt>FetchType.LAZY</tt>, consider one of the following:
| + | |
− | * [[#How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent|How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent]]
| + | |
− | * [[#How to Configure Static Weaving for JPA Entities|How to Configure Static Weaving for JPA Entities]]
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r5c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@ManyToOne|many-to-one]]
| + | |
− | | headers="r5c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt>.
| + | |
− | | headers="r5c1-t52 r1c3-t52" align="left" |
| + | |
− | By default, EclipseLink JPA ignores the <tt>fetch</tt> attribute and default <tt>javax.persistence.FetchType.EAGER</tt> applies.
| + | |
− | | + | |
− | To configure EclipseLink JPA to perform lazy loading when the <tt>fetch</tt> attribute set to <tt>FetchType.LAZY</tt>, configure one of the following:
| + | |
− | * [[#How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent|How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent]]
| + | |
− | * [[#How to Configure Static Weaving for JPA Entities|How to Configure Static Weaving for JPA Entities]]
| + | |
− | |- align="left" valign="top"
| + | |
− | | id="r6c1-t52" headers="r1c1-t52" align="left" |
| + | |
− | [[Introduction%20to%20EclipseLink%20JPA%20(ELUG)#@Basic|basic]]
| + | |
− | | headers="r6c1-t52 r1c2-t52" align="left" |
| + | |
− | EclipseLink JPA performs lazy loading when the <tt>fetch</tt> attribute is set to <tt>javax.persistence.FetchType.LAZY</tt>.
| + | |
− | | headers="r6c1-t52 r1c3-t52" align="left" |
| + | |
− | By default, EclipseLink JPA ignores the <tt>fetch</tt> attribute and default javax.persistence.<tt>FetchType.EAGER</tt> applies.
| + | |
− | | + | |
− | To configure EclipseLink JPA to perform lazy loading when the <tt>fetch</tt> attribute set to <tt>FetchType.LAZY</tt>, consider one of the following:
| + | |
− | * [[#How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent|How to Configure Dynamic Weaving for JPA Entities Using the EclipseLink Agent]]
| + | |
− | * [[#How to Configure Static Weaving for JPA Entities|How to Configure
| + | |
− | |}
| + | |
| | | |
| {{EclipseLink_JPA | | {{EclipseLink_JPA |
JPA specifies that lazy loading is a hint to the persistence provider that data should be fetched lazily when it is first accessed, if possible.
If you are developing your application in a Java EE environment, you only have to set fetch to javax.persistence.FetchType.LAZY, and EclipseLink persistence provider will supply all the necessary functionality.
When using a one-to-one or many-to-one mapping in a Java SE environment, to configure EclipseLink JPA to perform lazy loading when the fetch attribute is set to FetchType.LAZY, configure either dynamic or static weaving.
When using a one-to-one or many-to-one mapping in a Java SE environment that does not permit the use of -javaagent on the JVM command line, to configure EclipseLink JPA to perform lazy loading when annotation attribute fetch is set to javax.persistence.FetchType.LAZY, you can use static weaving.