`

Hibernate学习之----------------Hibernate查询

阅读更多

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();

 

另外要注意左右外连接的使用:左连接将左边的表连接取出来。,右连接将右边的表连接取出来。

 

以上内容学习自尚学堂..

分享到:
评论

相关推荐

    hibernate-release-5.2.10

    2. **库文件**:包含jar包,如hibernate-core.jar、hibernate-entitymanager.jar等,这些是我们在项目中引入Hibernate时需要用到的依赖库。 3. **文档**:通常包括用户指南、API文档、开发者文档等,这些文档提供了...

    hibernate-commons-annotations-5.0.1.Final.jar

    在本文中,我们将深入探讨`hibernate-commons-annotations-5.0.1.Final.jar`的源码,了解其内部结构和主要功能。 一、元数据注解 HCA的核心在于提供了一系列的注解,如`@Entity`、`@Table`、`@Column`、`@Id`等,...

    hibernate-release-4.1.4

    【标题】"hibernate-release-4.1.4" 是Hibernate框架的一个版本发布,具体为4.1.4.Final。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在处理数据库时使用面向对象的概念,极大地简化了数据库...

    hibernate-release-5.0.7.Final.zip

    而"hibernate-release-5.0.7.Final"目录则可能包含源码、文档、示例项目等,是深入学习和研究Hibernate的好材料。 总之,Hibernate 5.0.7.Final为Java开发带来了极大的便利,通过传智播客黑马程序员2016版的框架,...

    最新 hibernate-release-4.2.13.Final.tgz

    "hibernate-release-4.2.13.Final.tgz"是一个全面的Hibernate学习资源,不仅提供了运行环境所需的jar包,还包含了丰富的实践示例和详尽的文档。无论你是初学者还是经验丰富的开发者,都可以从中受益,进一步提升在...

    hibernate-distribution-3.6.0

    这个“hibernate-distribution-3.6.0”版本,虽然已不再是最新的,但其稳定性和实用性却赢得了众多开发者的钟爱,以至于在众多项目中仍然被广泛使用。 Hibernate 3.6.0的核心功能在于它能够将Java对象模型与关系...

    hibernate源码release-4.1.4.Final版

    通过深入学习Hibernate 4.1.4.Final的源码,我们可以更好地理解其设计思想,提升我们的编程技巧,同时也能为日常开发中遇到的问题提供解决方案。这是一份宝贵的资源,无论是对于初学者还是经验丰富的开发者,都值得...

    hibernate-core-5.3.7.Final.jar

    hibernate-core-5.3.7.Final.jar包的源码,仅供学习使用

    hibernate-orm-3.3源码

    本文将针对《hibernate-orm-3.3源码》进行深度解析,帮助读者理解其核心设计理念与实现机制。 一、Hibernate概述 Hibernate 是一款开源的 Java 库,它简化了数据库操作,通过将 Java 对象与数据库表之间的映射关系...

    hibernate-memcached-1.1.0-sources.zip

    `hibernate-memcached-1.1.0-sources.zip`提供的源码实现了一个Hibernate二级缓存提供者,它将Hibernate的查询结果缓存在Memcached中,当再次进行相同查询时,可以直接从缓存中获取数据,避免了重复的数据库查询。...

    hibernate-orm-master.zip

    "hibernate-orm-master.zip"文件包含了Hibernate ORM的源码和其他相关资源,对于学习和研究Hibernate ORM的工作原理以及如何在实际项目中使用它,是非常宝贵的资料。 在Java应用程序中,数据存储通常依赖于关系型...

    hibernate-distribution-3.5.6-Final.rar

    本次我们将深入探讨其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

    这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们深入了解其内部机制,从而更好地应用在实际项目中。 1. **JPA简介**:Java Persistence API(JPA)是Java平台上的一个标准...

    hibernate-annotation-helloword

    这不仅展示了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.6.Final.tar.gz`这个文件名。`...

    hibernate-distribution-3.6.0.Final-dist

    **hibernate-distribution-3.6.0.Final-dist** 是一个包含Hibernate框架3.6.0最终版本的压缩包。Hibernate是一个广泛使用的Java开发工具,它属于对象关系映射(ORM)框架,旨在简化数据库操作,使开发者能够用面向...

    hibernate-distribution-3.6.2 API及jar包

    testing.jar`来搭建开发环境,然后根据`hibernate-reference.pdf`文档的指导,配置Hibernate的属性文件(如hibernate.cfg.xml),定义实体类和映射文件(如.hbm.xml或使用注解),编写HQL或Criteria查询,实现数据的...

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    首先,Hibernate-JPA 2.1 API 是Hibernate对Java Persistence 2.1规范的实现,它提供了一系列接口和类,使得开发者可以方便地进行实体管理、查询、事务控制等操作。`1.0.0.Final`版本意味着这是一个稳定版本,适合...

    hibernate-release-5.0.11.Final

    本文将围绕`hibernate-release-5.0.11.Final`这个压缩包,详细介绍Hibernate的核心概念、主要功能以及实际应用。 一、Hibernate核心概念 1. 对象关系映射(ORM):Hibernate通过映射Java类到数据库表,实现了对象...

    hibernate-validator-4.1.0.Final.rar

    `hibernate-validator-4.1.0.Final-sources.jar`包含了源代码,开发者可以查看源码,深入理解其内部实现机制,对于调试和学习都非常有帮助。 7. **应用实践**: Hibernate Validator常用于Web应用中,配合Spring ...

Global site tag (gtag.js) - Google Analytics