`

Hibernate高级查询实战

 
阅读更多

大家知道,在Hibernate Framework中,提供了三种查询数据的方式:

    1.Hibernate Query Language (HQL):

    它是ANSI SQL的最小OO Dialect,例:

 

session.createQuery("from Category c where c.name like 'Laptop%'");
                     entityManager.createQuery("select c from Category c where c.name like 'Laptop%'");

 

    2.Criteria query :

    它是HQL查询的延伸,提供了一些高级查询功能例:

 

session.createCriteria(Category.class)
                .add( Restrictions.like("name", "Laptop%") );

 

    3.Native SQL query :

 

session.createSQLQuery(
"select {c.*} from CATEGORY {c} where NAME like 'Laptop%'"
).addEntity("c", Category.class);

 

    最近,我在项目中经常遇到Hibernate数据查询的任务,我对一些我遇到的较难的课题举例进行说明:

    《表述SELECT》

 

Criteria crit = session.createCriteria(User.class)
.setProjection( Projections.projectionList()
.add( Projections.property("lastname"))
.add( Projections.property("firstname"))
.list();

 

    《表述WHERE》

 

Criteria crit = session.createCriteria(User.class)
.add(Restrictions.eq("email", "foo@hibernate.org"))
.uniqueResult();

 

    《表述GROUP》

 

Criteria crit = session.createCriteria(User.class)
.setProjection( Projections.projectionList()
.add( Projections.groupProperty("lastname"))
.add( Projections.groupProperty("firstname"))
.list()

 

    《表述ORDER》

 

Criteria crit = session.createCriteria(User.class)
.addOrder( Order.asc("lastname") )
.addOrder( Order.asc("firstname") )
.list();

 

    《取TOP 5结果》:

 

Criteria crit = session.createCriteria(Cat.class);
.setMaxResults(5)
.list();

 

    《分页》:

 

Criteria crit = session.createCriteria(Cat.class)
.setFirstResult(1)
.setMaxResults(50)
.list();

 

    《取查询结果》:

 

如果使用select或group,必须使用object[]来获得查询结果List值;
如果未使用select或group,必须使用java object[]来获得查询结果List值;

 

    《涉及组合primary key属性》:

 

Criteria crit = session.createCriteria(activitylog.class)
.add( Restricts.eq(“comp_id.custId”,customerid0) )
.add( Restricts.ge(“createdTs”, starttime) )
.add( Restricts.le(“createdTs”, endtime ) )
.list();

 

    《Foreign Key联合查询》:

 

Criteria crit = session.createCriteria(activitylog.class)
.createAlias( “taskCodeRf”, “tc” )
.setProjection( Projections.projectionList()
.add( Projections.property("UserId"))
.add( Projections.property("tc.taskdescription"))
.list();

 

    《Native Query》:

 

SQLQuery query = session.createSQLQuery(“select  activitylog_seq.nextval as sessid from dual”);
Query.addScalar(“sessid”,Hibernate.LONG);
Long long0 = query.uniqueResult();
分享到:
评论

相关推荐

    Hibernate实战

    在本书中,作者详细介绍了Hibernate的核心概念、配置、实体管理、数据持久化、查询语言以及高级特性。 首先,我们要理解Hibernate的基本理念。ORM(Object-Relational Mapping)是将关系数据库的数据模型映射到面向...

    hibernate实战 英文版

    5. **查询语言**:Hibernate提供了强大的查询语言HQL(Hibernate Query Language),用于执行复杂的数据库查询操作。 6. **高级特性**:除了基础功能之外,本书还涵盖了诸如懒加载、批量更新和删除等高级特性。 ###...

    Manning.Java.Persistence.with.Hibernate[Hibernate实战第二版].pdf

    该书详细介绍了Hibernate的基础概念、配置、实体管理、查询语言(HQL和Criteria API)、关联映射、缓存策略、性能优化以及高级特性。通过实际案例,读者可以了解到如何在项目中有效地使用Hibernate进行数据持久化。书...

    Hibernate开发实战讲解(源代码)

    在这个压缩包中,我们期待找到一系列关于Hibernate配置、实体映射、会话管理、查询操作、缓存策略以及其他高级特性的示例代码。 1. **Hibernate简介**:Hibernate是Java平台上的一个开源对象关系映射(ORM)框架,...

    Hibernate4实战.pdf

    综上所述,Hibernate4实战文档包含的知识点涵盖了Hibernate的基本概念、核心组件、映射技术、配置方法、事务管理,以及如何与Java应用集成。同时,该文档还涉及了Java开发者的薪资水平、学习资源获取方式,提供了...

    hibernate实战第二版.pdf

    书中的内容涵盖了Hibernate的基础知识,包括安装配置、实体映射、会话管理、查询语言(HQL)和 Criteria API,以及更高级的主题如缓存机制、多表关联、事务处理和性能优化等。 1. **Hibernate基础**:介绍Hibernate的...

    Hibernate实战(第2版).zip

    此外,还会详细介绍Hibernate的对象状态转换、CRUD操作(创建、读取、更新、删除)、级联操作、查询语言(HQL)以及Criteria API的使用。这些内容涵盖了日常开发中与数据库交互的大部分需求。 在高级特性部分,书中...

    hibernate实战 第2版.pdf

    但是,考虑到标题和描述中提到的“hibernate实战 第2版.pdf”,我们可以基于这个信息来生成关于Hibernate的知识点。以下是根据这一主题撰写的详细知识点: Hibernate是一个开放源代码的对象关系映射(ORM)框架,...

    Hibernate实战(第2版) 高清扫描版

    《Hibernate实战(第2版)》是一本深入探讨Java持久化框架Hibernate的专业书籍,高清扫描版使得读者可以清晰地获取书中的每一个细节。Hibernate作为Java领域最流行的ORM(对象关系映射)框架之一,它极大地简化了...

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

     第15章 高级查询选项   15.1 利用条件和示例查询   15.1.1 基本的条件查询   15.1.2 联结和动态抓取   15.1.3 投影和报表查询   15.1.4 按示例查询   15.2 利用原生的SQL查询   15.2.1 自动的结果集...

    Hibernate实战(第2版).pdf

    《Hibernate实战(第2版)》是一本深入探讨Java持久化框架Hibernate的专业书籍,它针对的是Java开发人员,特别是那些希望提升数据库管理效率和优化应用程序性能的开发者。Hibernate作为一个开源的对象关系映射(ORM...

    Hibernate实战第2版.zip

    8. Advanced Topics:深入探讨高级主题,如懒加载(Lazy Loading)、集合的优化、批量操作、级联操作、子查询、联合查询、多态性处理、JPA(Java Persistence API)对比和整合等。 9. 性能优化:讲解如何通过调整...

    Hibernate4实战(pdf_source).

    《Hibernate4实战》这本书主要涵盖了Hibernate4框架在Java开发中的应用和高级技术,包括关系映射、事务管理、核心原理、性能优化以及二级缓存的使用。以下是对这些主题的详细解析: 1. **关系映射**:Hibernate是...

    hibernate实战(Java Persistence With Hibernate.pdf )

    《Hibernate实战》(Java Persistence With Hibernate)是一本深入探讨Hibernate框架的权威著作,它详尽地阐述了如何在Java环境中实现持久化操作。本书旨在帮助Java开发者熟练掌握Hibernate这一强大的对象关系映射...

    hibernate实战

    此外,还会有高级查询技巧,如分页、排序、聚合函数等。 事务处理是数据库操作中的关键部分,书中会阐述Hibernate的事务管理机制,包括编程式和声明式事务,以及如何处理并发控制和异常情况。此外,性能优化也是...

    Hibernate4实战

    ### Hibernate4实战:深入探索与应用 #### 一、Hibernate简介与入门 Hibernate是一个开源的对象关系映射(ORM)框架,用于Java环境下的数据库交互。它简化了数据持久化的复杂性,提供了一种将对象模型映射到关系型...

    Hibernate实战(第2版

    《Hibernate实战(第2版)》是一本专为开发者设计的深入浅出的教程,旨在帮助读者全面理解和熟练掌握Hibernate框架。Hibernate是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互,...

Global site tag (gtag.js) - Google Analytics