Hibernate查询有两种方式:
1.Native SQL 本地的原始方式sql查询,
2.HQL(Hibernate Query Language)hibernate的查询语句.
这里主要介绍HQL,HQL中含有EJBQL(JPQL 1.0)
HQL支持从每个实体类中查询数据,但要注意其查询时类名称要一致。
例 HQL List:
//创建并打开session Session session = sf.openSession(); session.beginTransaction();//开始事务 Query q = session.createQuery("from Category");//创建HQL查询对象,注意查询的是类名哦 List<Category> categories = (List<Category>)q.list();//因为没有条件,查询所有该类的在数据库的对象,并放到列表 for(Category c : categories) { System.out.println(c.getName()); } session.getTransaction().commit();//提交事务 session.close();//关闭session
起始你看了觉得和本地SQL没有多大区别,但是你可以看到下面的就要区别了:
public class MsgInfo { //VO DTO Value Object username p1 p2 UserInfo->User->DB private int id; private String cont; private String topicName; private String categoryName; public MsgInfo(int id, String cont, String topicName, String categoryName) { super(); this.id = id; this.cont = cont; this.topicName = topicName; this.categoryName = categoryName; } public String getTopicName() { return topicName; } public void setTopicName(String topicName) { this.topicName = topicName; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCont() { return cont; } public void setCont(String cont) { this.cont = cont; } }
测试
Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select new suse.ly.domain.MsgInfo(m.id, m.cont, m.topic.title, m.topic.category.name) from Msg m"); for(Object o : q.list()) { MsgInfo m = (MsgInfo)o; System.out.println(m.getCont()); } session.getTransaction().commit(); session.close();
可以看到,在查询中可以将查询结果直接存储为一个对象,这是HQL的一大好处。
NativeSQL使用:
Session session = sf.openSession(); session.beginTransaction(); SQLQuery q = session.createSQLQuery("select * from category limit 2,4").addEntity(Category.class); List<Category> categories = (List<Category>)q.list(); for(Category c : categories) { System.out.println(c.getName()); } session.getTransaction().commit(); session.close();
另外要注意左右外连接的使用:左连接将左边的表连接取出来。,右连接将右边的表连接取出来。
以上内容学习自尚学堂..
相关推荐
2. **库文件**:包含jar包,如hibernate-core.jar、hibernate-entitymanager.jar等,这些是我们在项目中引入Hibernate时需要用到的依赖库。 3. **文档**:通常包括用户指南、API文档、开发者文档等,这些文档提供了...
在本文中,我们将深入探讨`hibernate-commons-annotations-5.0.1.Final.jar`的源码,了解其内部结构和主要功能。 一、元数据注解 HCA的核心在于提供了一系列的注解,如`@Entity`、`@Table`、`@Column`、`@Id`等,...
【标题】"hibernate-release-4.1.4" 是Hibernate框架的一个版本发布,具体为4.1.4.Final。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在处理数据库时使用面向对象的概念,极大地简化了数据库...
而"hibernate-release-5.0.7.Final"目录则可能包含源码、文档、示例项目等,是深入学习和研究Hibernate的好材料。 总之,Hibernate 5.0.7.Final为Java开发带来了极大的便利,通过传智播客黑马程序员2016版的框架,...
"hibernate-release-4.2.13.Final.tgz"是一个全面的Hibernate学习资源,不仅提供了运行环境所需的jar包,还包含了丰富的实践示例和详尽的文档。无论你是初学者还是经验丰富的开发者,都可以从中受益,进一步提升在...
这个“hibernate-distribution-3.6.0”版本,虽然已不再是最新的,但其稳定性和实用性却赢得了众多开发者的钟爱,以至于在众多项目中仍然被广泛使用。 Hibernate 3.6.0的核心功能在于它能够将Java对象模型与关系...
通过深入学习Hibernate 4.1.4.Final的源码,我们可以更好地理解其设计思想,提升我们的编程技巧,同时也能为日常开发中遇到的问题提供解决方案。这是一份宝贵的资源,无论是对于初学者还是经验丰富的开发者,都值得...
hibernate-core-5.3.7.Final.jar包的源码,仅供学习使用
本文将针对《hibernate-orm-3.3源码》进行深度解析,帮助读者理解其核心设计理念与实现机制。 一、Hibernate概述 Hibernate 是一款开源的 Java 库,它简化了数据库操作,通过将 Java 对象与数据库表之间的映射关系...
`hibernate-memcached-1.1.0-sources.zip`提供的源码实现了一个Hibernate二级缓存提供者,它将Hibernate的查询结果缓存在Memcached中,当再次进行相同查询时,可以直接从缓存中获取数据,避免了重复的数据库查询。...
"hibernate-orm-master.zip"文件包含了Hibernate ORM的源码和其他相关资源,对于学习和研究Hibernate ORM的工作原理以及如何在实际项目中使用它,是非常宝贵的资料。 在Java应用程序中,数据存储通常依赖于关系型...
本次我们将深入探讨其3.5.6版本的特性与应用,通过分析压缩包"hibernate-distribution-3.5.6-Final.rar"中的内容,来揭示Hibernate在数据库管理和对象模型之间的桥梁作用。 首先,"docs"目录包含了Hibernate 3.5.6...
这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们深入了解其内部机制,从而更好地应用在实际项目中。 1. **JPA简介**:Java Persistence API(JPA)是Java平台上的一个标准...
这不仅展示了Hibernate的强大之处,也是学习ORM和数据库操作的一个良好起点。 总结来说,**hibernate-annotation-helloworld**项目是一个基础的教程,帮助开发者快速理解并开始使用Hibernate的注解方式来处理数据库...
本篇文章将深入探讨`hibernate-distribution-3.6.6.Final.tar.gz`压缩包中的内容,帮助读者理解其核心概念、主要功能以及使用方法。 首先,让我们来看看`hibernate-distribution-3.6.6.Final.tar.gz`这个文件名。`...
**hibernate-distribution-3.6.0.Final-dist** 是一个包含Hibernate框架3.6.0最终版本的压缩包。Hibernate是一个广泛使用的Java开发工具,它属于对象关系映射(ORM)框架,旨在简化数据库操作,使开发者能够用面向...
testing.jar`来搭建开发环境,然后根据`hibernate-reference.pdf`文档的指导,配置Hibernate的属性文件(如hibernate.cfg.xml),定义实体类和映射文件(如.hbm.xml或使用注解),编写HQL或Criteria查询,实现数据的...
首先,Hibernate-JPA 2.1 API 是Hibernate对Java Persistence 2.1规范的实现,它提供了一系列接口和类,使得开发者可以方便地进行实体管理、查询、事务控制等操作。`1.0.0.Final`版本意味着这是一个稳定版本,适合...
本文将围绕`hibernate-release-5.0.11.Final`这个压缩包,详细介绍Hibernate的核心概念、主要功能以及实际应用。 一、Hibernate核心概念 1. 对象关系映射(ORM):Hibernate通过映射Java类到数据库表,实现了对象...
`hibernate-validator-4.1.0.Final-sources.jar`包含了源代码,开发者可以查看源码,深入理解其内部实现机制,对于调试和学习都非常有帮助。 7. **应用实践**: Hibernate Validator常用于Web应用中,配合Spring ...