好吧,我的疑问很简单:为了获得最佳性能,建议在我不需要使用的属性中始终使用惰性初始化(这很明显)。因此,请想象以下类:
@Entity
public class Person{
@Column
private String name;
@ManyToOne(fetch = FetchType.Lazy)
@JoinColumn(name = "id_type")
private TypePerson type;
}
在我的主类中,我将未初始化的具有“ type”属性的人称为“波纹管”:
public void init(){
//in this point "type" attribute is not initialized
Person person = dao.find("Select * from Person where id = 12");
//proxys work here to get description of "type" attribute
System.out.println(person.getType().getDescription());
}
因此,我从数据库中获得了一个简单的Person对象,并在控制台上打印了person类型。在这一刻,代理CGLIB可以发挥作用,并且可以发挥作用,一切正常。
但是,我在这里提出我的问题:
1-当我请求“ getType()”时,Hibernate(或其他机制)在后台进行SQL查询吗?如:“ SELECT * FROM
TypePerson,其中id = 3”。
如果答案是肯定的: 这种获取属性值的方法可能会非常痛苦,因为我认为Hibernate每次都会在数据库中进行操作以获取这些信息。
如果答案是否定的: 如果未从dataBase加载Proxy,如何知道该属性的值?
您打电话的时候
person.getType().getDescription()
如果person
引用的是尚未初始化的Hibernate代理,则可以,它将发出SQL查询以检索目标实体的字段值。
这种获取属性值的方法可能会非常痛苦,因为我认为Hibernate每次都会在数据库中进行操作以获取这些信息。
每个代理服务器只会发送一次。第一次使用时,它将在代理上设置一个标志,指示其已初始化,因此基础目标实体具有正确的值。如果已加载所有值,则无需返回数据库。
这不是Hibernate创建代理的确切方式,但是很好阅读:Proxy
Pattern
。
这组订单应该是惰性加载的,但我得到以下异常:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是org.hibernate.lazyInitializationException:未能懒洋洋地初始化Role:...,没有会话或会话被关闭 根本原因:org.hibernate.lazyInitializationExcept
我试着调整我的应用程序,所以我把关系变成懒惰的,只取我需要的东西 我的多对一关系有一个问题,当我再次加载实体时转到lazy时,Hibernate将实体替换为代理,即使我获取了该实体,而该代理在应用程序的视图部分(JSF)中不工作。当多对一处于急切模式时,问题就会消失,但hibernate会为每个多对一执行一个select more(选择更多),即使我不需要它们 1/ 2/ JPQL查询: =>两次
在标记为重复之前,请考虑我已经翻阅了许多相关的堆栈溢出帖子,以及网站和文章。我还没有找到解决办法。 这个问题是Selenium Webdriver找不到XPATH的后续问题,尽管字符串看起来完全相同。通过更新代码以更优雅的方式工作,我确定问题实际上不是来自xpath方法: 这适用于前5ish元素。但是之后它会超时,通过获取img_div的内部html并打印它,我发现对于超时的元素,不是我想要的图像
问题内容: hibernate中的property标签的lazy属性允许按照以下链接延迟加载属性:http : //docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping- declaration -属性 lazy(可选-默认为false):指定在首次访问实例变量时应延迟获取此属性。它需要构建时字节码检测
我们目前有几个@OneToOne关系,由于已知的惰性加载的限制,它们总是会急切地从反方向获取。 为了启用逆关系的延迟加载,我正在尝试启用构建时字节码检测。 到目前为止我所做的... 这些关系现在不再急切地加载...但是它们也不会延迟加载,它们只是静默地返回null。 我尝试从实体中删除接口和字段,因为我不确定是否需要这样做,在此之后,我在启动时不再获得消息,并且默认情况下返回到急切加载。 我是不是
我谷歌了很多,这是真的奇怪的Spring Boot(最新版本)可能没有懒惰加载是不工作的。以下是我的代码片段: 我的资源: 我的服务: 编辑2: 对于规范构建,我有: