Hibernate中,left join、inner join以及left join fetch区别
来源:互联网 发布:linux查看log分页输出 编辑:程序博客网 时间:2024/05/17 08:20
Select <要查询的字段> From <Left 资料表>
<Left | Right> [Outer] Join <Right 资料表> On <Join 规则>
LEFT JOIN返回”left_table”中所有的行尽管在” right_table”中没有相匹配的数据。
RIGHT JOIN返回”right_table”中所有的行尽管在”left_table”中没有相匹配的数据。
INNER JOIN返回的结果集是两个表中所有相匹配的数据。
Fetch:
在我们查询Parent对象的时候,默认只有Parent的内容,并不包含childs的信息,如果在Parent.hbm.xml里设置lazy="false"的话才同时取出关联的所有childs内容.
问题是我既想要hibernate默认的性能又想要临时的灵活性该怎么办? 这就是fetch的功能。我们可以把fetch与lazy="true"的关系类比为事务当中的编程式事务与声明式事务,不太准确,但是大概是这个意思。
Query q = session.createQuery("from Parent as parent "+" left outer join fetch parent.childs " +" where parent.id = :id");
总之,fetch就是在代码这一层给你一个主动抓取得机会.
可以在lazy="true"的情况下把fetch去掉,就会报异常. 当然,如果lazy="false"就不需要fetch了
<Left | Right> [Outer] Join <Right 资料表> On <Join 规则>
LEFT JOIN返回”left_table”中所有的行尽管在” right_table”中没有相匹配的数据。
RIGHT JOIN返回”right_table”中所有的行尽管在”left_table”中没有相匹配的数据。
INNER JOIN返回的结果集是两个表中所有相匹配的数据。
Fetch:
在我们查询Parent对象的时候,默认只有Parent的内容,并不包含childs的信息,如果在Parent.hbm.xml里设置lazy="false"的话才同时取出关联的所有childs内容.
问题是我既想要hibernate默认的性能又想要临时的灵活性该怎么办? 这就是fetch的功能。我们可以把fetch与lazy="true"的关系类比为事务当中的编程式事务与声明式事务,不太准确,但是大概是这个意思。
Query q = session.createQuery("from Parent as parent "+" left outer join fetch parent.childs " +" where parent.id = :id");
总之,fetch就是在代码这一层给你一个主动抓取得机会.
可以在lazy="true"的情况下把fetch去掉,就会报异常. 当然,如果lazy="false"就不需要fetch了
0 0
- Hibernate中,left join、inner join以及left join fetch区别
- Hibernate中,left join、inner join以及left join fetch区别
- Hibernate中,left join、inner join以及left join fetch区别
- Hibernate中,left join、inner join以及left join fetch区别
- left join 和 inner join 以及 fetch
- Hibernate中,left join、inner join以及left
- Hibernate inner join left join
- LEFT JOIN,INNER JOIN区别
- left join,inner join区别
- hibernate 中left join 与left join fetch ,right join与right join fetch 等的区别
- 简述 left join、right join 以及inner join 的区别
- left join /right join/inner join区别
- left join / right join /inner join 区别
- left join 、right join、inner join 区别
- SQL中LEFT JOIN、Inner Join、Right Join、Left Outer Join、full join区别
- sql中left join、right join、inner join的区别
- sql 中left join,right join,inner join区别
- mysql中left join、right join、inner join的区别
- IOS开发(53)之StoryboardsTest初窥
- python 字符串的trim
- Rsync install
- Centos基本命令使用
- IOS开发(54)之Storyboard之传值
- Hibernate中,left join、inner join以及left join fetch区别
- C++学习第九天:初次接触C++数组
- SFTP install
- windows环境中vim插件配置
- [1170] Steps
- IOS开发(55)之为普通App添加Storyboard
- Linux内核编程(20140604)
- Havork 为图形添加 Lua 脚本
- 《从菜鸟到测试架构师》简要总结(3)----BVT