`

hibernate的多态查询

阅读更多

Hibernate加载方式与多态加载分析:

1. Session中的load和get方法:
a) Load方法支持CGLIB lazy动态代理方式,所以加载的时候它会生成一个代理类.如果设置lazy为true 由于代理类不是真正的实例 无法用instenceof判断类的归属,所以它不支持多态加载.反之,如果把lazy设置为false那么就和get一样可以支持多态加载了.
b) Get方法默认不支持CGLIB lzay动态代理方式, 所以它加载的时候会直接产生一个真实的类.他是支持多态加载的.
注: load 和 get 方式ApI中所加载的实体的运行时类(Class<?>)是又两部分组成: 
1. 这个Class<?>运行时类对应的实体对象.
2. 与实体对象对应的映射文件.
所以,如果没有由这两个组成session会看作是不合法的参数,并抛出异常. 这就是它不会和Criteria方式加载(Object.class)类型的参数可以通过的根本原因. 
2. Query中的HQL接口:
HQL的查询方法说是通过对象查询的,但是经过分析, 它是根据配置文件来进行查询的,因为它定义查询语句的方式是根据映射文件中表的结构进行查询的. 所以,不同结构的映射文件中,同样的方法可能达到的效果是完全不一样的. 比如”From java.lang.Object”.
注: From java.lang.Object 是取出所有表中的所有数据,相当于链接全部表的字段.
3. Criteria对象查询接口:
顾名思义,Criteria是Hibernate的一套对象查询模式.但是它和HQL的本质是差不多的,也是通过配置文件来生成SQL语句. 所以不必过多的说了.

多态加载方面:
以上这些方法, 除了load方法的默认设置不支持多态加载之外,其他的形式都有一定程度上的支持. 但是表的结构一定要和映射文件中的一一对应才可以启用多态查询方式.

 

分享到:
评论

相关推荐

    Hibernate加载方式与多态加载分析

    自己研究的hibernate加载方式和多态加载的分析. 写的不好,不过可以供深入者确切体会hibernate的种种功能的本质

    Hibernate HQL查询.docx

    Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    HQL Hibernate查询语言

    Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。

    Hibernate+中文文档

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     17.1.6 多态查询  17.1.7 对查询结果排序  17.1.8 分页查询  17.1.9 检索单个对象(uniqueResult()方法)  17.1.10 按主键逐个处理查询结果(iterate()方法)  17.1.11 可滚动的结果集  17.1.12 在HQL查询...

    hibernate3.2中文文档(chm格式)

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria ...

    Hibernate查询语言(HQL)

    Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。

    HibernateAPI中文版.chm

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria ...

    hibernate中文帮助及语法配置

    详细的介绍hibernate的所有配置映射、事务、xml的配置、多态查询、关联等核心中文帮助,提供源代码参考

    Hibernate 中文 html 帮助文档

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) 15.1...

    Hibernate中文详细学习文档

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria ...

    最全Hibernate 参考文档

    14.6. 多态查询 14.7. where子句 14.8. 表达式 14.9. order by子句 14.10. group by子句 14.11. 子查询 14.12. HQL示例 14.13. 批量的UPDATE & DELETE语句 14.14. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) ...

    hibernate中文教材

    Hibernate是一种强大的可提供对象-关系持久化和查询服务的中间件,它可以使程序员依据面向对象的原理开发持久化类,实现对象之间的关联、继承、多态、组合、集合等。 Hibernate提供了它特有的数据库查询语言HQL,...

    hibernate 体系结构与配置 参考文档(html)

    多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria Queries) ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL示例 14.14. 批量的UPDATE和DELETE 14.15. 小技巧 & 小窍门 15. 条件查询(Criteria ...

    hibernate 教程

    多态(polymorphism)查询 11.7. where子句 11.8. 表达式(Expressions) 11.9. order by 子句 11.10. group by 子句 11.11. 子查询 11.12. HQL示例 11.13. 提示和技巧(Tips & Tricks) 12. ...

    Hibernate教程

    15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by子句 15.10. group by子句 15.11. 子查询 15.12. HQL示例 15.13. 批量的UPDATE & DELETE语句 15.14. 小技巧 & 小窍门 16. 条件查询(Criteria ...

Global site tag (gtag.js) - Google Analytics