![](/img/trans.png)
[英]JPA 2.0 / Hibernate: Why does LAZY fetching with “@OneToOne” work out of the box?
[英]How does lazy fetching work in Hibernate?
我已經用惰性獲取配置了userDetails類,並且還配置了惰性獲取的設置。 我正在運行此代碼:
userDetails user = new userDetails();
user.setUserName("Fenil");
Address address = new Address();
address.setCity("baroda");
address.setState("gujarat");
user.getListOfAddress().add(address);
SessionFactory sessionfactory = new
Configuration().configure().buildSessionFactory();
Session session = sessionfactory.openSession();
session.beginTransaction();
session.save(user);
system.out.println(user.getName()); //sop1
session.getTransaction().commit();
session.close();
system.out.println(user.getName()); //sop2
當我運行上面的代碼時,它為我提供了用戶名的值。 但是,如果我在session.close()之后立即替換sop行,則會引發異常。
我的問題是:
如果我在關閉會話之前打印了sop1行,則應為我提供用戶名,而在關閉會話之后,標記為sop2的行應引發異常,但它將返回用戶名的值。 為什么?
延遲獲取仍然僅獲取一次,存儲結果供后續調用。 在您的第二個呼叫期間,數據已被提取,因此即使在會話關閉后也可以將其返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.