lazy loading problem [message #755295] |
Mon, 07 November 2011 18:39  |
Eclipse User |
|
|
|
While trying to do some tests on lazy loading, to check if i'm understanding it well, i got totally confused.
Here's the entities i'm using on my test:
@Entity
public class Family {
@Id
@SequenceGenerator(name="Family_SEQ")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Family_SEQ")
private int id;
@OneToMany(mappedBy="family", fetch=FetchType.LAZY)
private Set<Person> members;
//getters & setters
public String toString(){
String s="";
for(Person p:getMembers()){
s+=p.getFirstName();
}
return s;
}
}
@Entity
public class Person implements Comparable<Person>{
@Id
@SequenceGenerator(name="Person_SEQ")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Person_SEQ")
private int id;
private String firstName;
private String lastName;
@ManyToOne
private Family family;
//getters &setters
}
this is my main method :
public static void main(String[] args) {
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
em = factory.createEntityManager();
Query q = em.createQuery("select f from Family f");
List<Family> families= q.getResultList();
em.clear();
em.close();
factory.close();
for(Family f:families){
System.out.println(f);
}
}
What i understood from lazy loading, is that if an attribute is marked to be fetched lazily, and doesn't get accessed while it's managed, it won't be loaded in memory and any attempt to access it later won't work. Now what confuses me is that the test described above doesn't have any problem when accessing the lazy members attribute through the detached Family list, even after closing the EM and the EMF ! ... Is that normal? Am-i miss-understanding the lazy loading concept?
Note : I'm using a J2SE environment with an embedded DB.
Thanks in Advance
George
|
|
|
|
|
|
Re: lazy loading problem [message #755604 is a reply to message #755572] |
Tue, 08 November 2011 17:14  |
Eclipse User |
|
|
|
I've Turned on EclipseLink logging to Finest, and figured out that after the factory had been closed, eclipselink did reconnect to the database, then querried for each relationship.
Thanks to you, i understood every thing. Thank you very much :)
|
|
|
Powered by
FUDForum. Page generated in 0.06383 seconds