inner join fetch

Inner Join 的主要精神就是 exclusive , 叫它做排他性吧! 就是讲 Join 规则不相符的资料就会被排除掉, 譬如讲在 Product 中有一项产品的供货商代码 (SupplierId), 没有出现在 Suppliers 资料表中, 那么这笔记录便会被排除掉

Outer Join:

Select <要查询的字段> From <Left 资料表>

  <Left | Right> [Outer] Join <Right 资料表> On <Join 规则>

语法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本质上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查询结果会包含所有 Left 资料表的资料, 颠倒过来讲, Right Outer Join 的查询就会包含所有 Right 资料表的资料

Fetch:

在我们查询Parent对象的时候,默认只有Parent的内容,并不包含childs的信息,如果在Parent.hbm.xml里设置lazy="false"的话才同时取出关联的所有childs内容. 
问题是我既想要hibernate默认的性能又想要临时的灵活性该怎么办?  这就是fetch的功能。我们可以把fetch与lazy="true"的关系类比为事务当中的编程式事务与声明式事务,不太准确,但是大概是这个意思。 
总值,fetch就是在代码这一层给你一个主动抓取得机会.

时间: 2024-08-15 23:48:59

inner join fetch的相关文章

Hibernate中,left join、inner join以及left join fetch区别(转)

标签: hibernate hql inner join left right 杂谈 分类: SQL 原文地址:http://m33707.iteye.com/blog/829725 Select From [Outer] Join On LEFT JOIN返回"left_table"中所有的行尽管在" right_table"中没有相匹配的数据. RIGHT JOIN返回"right_table"中所有的行尽管在"left_table

HQL语句中的join fetch

from Paper as paper join fetch paper.authors as authors where authors.id='xxxx'; from Paper as paper join fetch paper.authors where paper.authors.id='xxxx'; 这两个语句有什么区别呢?通过最终生成的sql发现. 上面HQL生成最终sql(部分) from s_paper paper inner join s_paper_author autho

Hibernate5-多对1(n:1)-fetch=&quot;join&quot;

1.创建项目,项目名称hibernatedemo26,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体类Forum,包名(com.mycompany.demo.bean),如图所示 4.实体类Forum的内容如下 package com.mycompany.demo.bean; import java.util.Set; public class Forum { private int fid; private String name; p

Hibernate5-1对多(1:n)-fetch=&quot;join&quot;

1.创建项目,项目名称hibernatedemo22,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体类Forum,包名(com.mycompany.demo.bean),如图所示 4.实体类Forum的内容如下 package com.mycompany.demo.bean; import java.util.Set; public class Forum { private int fid; private String name; p

Hibernate的fetch

hibernate抓取策略fetch详细解释一.hibernate抓取策略(单机端代理批量抓取fetch=select(默认)/join)测试用例:Student student = (Student)session.get(Student.class, 1);System.out.println(student.getName());System.out.println(student.getClasses().getName()); 1)保持默认,同fetch="select",如

hibernate之fetch

处理关联关系是ORM中一常见操作,特别是在查询的时候,经常要在查询某个实体的时候要把它实体关联属性也查询出来,例如查询用户时级联查询角色信息,还有可能角色及联查询权限信息.在hibernate中实现这个目的有很多总方式: 1.配置OpenSessionInViewFilter,让Session在View层中保存打开状态,可以随时使用,这看起来是个一劳永逸的办法,但其也带来了一些问题,  至于会有什么样的问题百度会给你答案. 2.在映射实体时把关联属性设置lazy="false",表示该

hql查询语句 内存中的情况,fetch迫切查询关键字

1 package cn.itcast.hibernate.sh.dao; 2 3 import java.util.ArrayList; 4 import java.util.HashSet; 5 import java.util.List; 6 import java.util.Set; 7 8 import org.hibernate.Query; 9 import org.hibernate.Session; 10 import org.junit.Test; 11 12 import

Hibernate5-1对多(1:n)-fetch=&quot;select&quot;-lazy=&quot;false&quot;

1.创建项目,项目名称hibernatedemo23,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体类Forum,包名(com.mycompany.demo.bean),如图所示 4.实体类Forum的内容如下 package com.mycompany.demo.bean; import java.util.Set; public class Forum { private int fid; private String name; p

Hibernate中fetch和lazy介绍

fetch ,指定关联对象抓取的方式,可以设置fetch = "select" 和 fetch = "join".select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个select查询,获取关联的对象,形成n+1次查询:而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询. 在映射文档中定义的抓取策略将会有产生以下影响: (1)通过get()或load()方法取得数据. (2)只有在关联之间进行导