M S*_*ach 4 java hibernate lazy-loading
@Entity
public class Person {
@Id
@GeneratedValue
private int personId;
@OneToOne(cascade=CascadeType.ALL, mappedBy="person", fetch=FetchType.LAZY)
private PersonDetail personDetail;
//getters and setters
}
@Entity
public class PersonDetail {
@Id
@GeneratedValue
private int personDetailId;
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private Person person;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
当我做
Person person1=(Person)session.get(Person.class, 1);
Run Code Online (Sandbox Code Playgroud)
我看到两个问题被解雇了.一个用于获取人员数据,另一个用于获取人员详细数据.
根据我的理解,应该只触发1个查询,用于获取人员数据而非人员详细数据,因为我已经提到了延迟加载.为什么personDetail数据与人员数据一起被提取?
Hibernate不能像处理关系中的集合/列表那样代理您自己的对象@ToMany,因此延迟加载不起作用.
我认为这个链接可能有助于理解您的问题:http://justonjava.blogspot.co.uk/2010/09/lazy-one-to-one-and-one-to-many.html
| 归档时间: |
|
| 查看次数: |
10917 次 |
| 最近记录: |