簡體   English   中英

懶惰獲取在Hibernate中如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM