![](/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.