hibernate的hbm文件配置中set元素的fetch属性和outer-join属性有什么区别和联系?

我怎么感觉一方存在了另一方就是多余的,求赐教!... 我怎么感觉一方存在了另一方就是多余的,求赐教! 展开
 我来答
百度网友ea1f1e9
2011-08-29
知道答主
回答量:16
采纳率:0%
帮助的人:12万
展开全部
fetch定义的是两个关联对象的抓取策略,得到一个对象时怎么去得到另外一个对象,是通过连接查询(join)还是另外发起一条sql等。一方存在和另外一方存在是不冲突的。

outer-join关键字(many-to-one的情况)
outer-join关键字有3个值,分别是true,false,auto,默认是auto。
true: 表示使用外连接抓取关联的内容,这里的意思是当使用load(OrderLineItem.class,"id")时,Hibernate只生成一条SQL语句将OrderLineItem与他的父亲Order全部初始化。
select * from OrderLineItem o left join Order p on o.OrderId=p.OrderId where o.OrderLineItem_Id=?
false:表示不使用外连接抓取关联的内容,当load(OrderLineItem.class,"id")时,Hibernate生成两条 SQL语句,一条查询OrderLineItem表,另一条查询Order表。这样的好处是可以设置延迟加载,此处要将Order类设置为 lazy=true。
select * from OrderLineItem o where o.OrderLineItem_Id=?
select * from Order p where p.OrderId=?
auto:具体是ture还是false看hibernate.cfg.xml中的配置
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式