hibernate注解属性问题
@ManyToOne(fetch=FetchType.EAGER)这个里面的fetch配置是什么作用@Fetch(FetchMode.JOIN)这个fetch又是什么作用...
@ManyToOne(fetch = FetchType.EAGER) 这个里面的fetch配置是什么作用
@Fetch(FetchMode.JOIN)这个fetch又是什么作用 跟上面的有什么区别 展开
@Fetch(FetchMode.JOIN)这个fetch又是什么作用 跟上面的有什么区别 展开
展开全部
问题1:
fetch属性,设定关联对象的加载策略或方式。可选值如下:
FetchType.LAZY:懒加载,关联对象不立刻加载(即从数据库读入到内存),在使用到的时候加载。
FetchType.EAGER:立刻加载,在加载主体对象时,同时加载关联属性对象。
问题2:
两者都是设定加载策略,前者是JPA标准设定加载策略的注解属性,后者是hibernate自有加载策略注解。可选值如下:
@Fetch(FetchMode.JOIN):始终立刻加载,使用外连(outer join)立刻加载关联对象,且忽略FetchType.LAZY。
@Fetch(FetchMode.SELECT) 默认懒加载(除非设定lazy=false),在访问每一个关联对象时用Select查询加载。有n+1次查询。
@Fetch(FetchMode.SUBSELECT) 默认懒加载(除非设定lazy=false),在第一次访问关联对象时才一次性加载所有关联对象。共产生两条sql语句,且FetchType设定有效。
fetch属性,设定关联对象的加载策略或方式。可选值如下:
FetchType.LAZY:懒加载,关联对象不立刻加载(即从数据库读入到内存),在使用到的时候加载。
FetchType.EAGER:立刻加载,在加载主体对象时,同时加载关联属性对象。
问题2:
两者都是设定加载策略,前者是JPA标准设定加载策略的注解属性,后者是hibernate自有加载策略注解。可选值如下:
@Fetch(FetchMode.JOIN):始终立刻加载,使用外连(outer join)立刻加载关联对象,且忽略FetchType.LAZY。
@Fetch(FetchMode.SELECT) 默认懒加载(除非设定lazy=false),在访问每一个关联对象时用Select查询加载。有n+1次查询。
@Fetch(FetchMode.SUBSELECT) 默认懒加载(除非设定lazy=false),在第一次访问关联对象时才一次性加载所有关联对象。共产生两条sql语句,且FetchType设定有效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。
2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。
3、比方User类有两个属性,name跟address,就像百度知道,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;而用户地址大多数情况下不需要显示出来,只有在查看用户资料是才需要显示,需要用了才查数据库,用懒加载就好了。所以,并不是一登录就把用户的所有资料都加载到对象中,于是有了这两种加载模式。
2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。
3、比方User类有两个属性,name跟address,就像百度知道,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;而用户地址大多数情况下不需要显示出来,只有在查看用户资料是才需要显示,需要用了才查数据库,用懒加载就好了。所以,并不是一登录就把用户的所有资料都加载到对象中,于是有了这两种加载模式。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询