在 第一個 Hibernate 中介紹如何使用Hibernate在不使用SQL的情況下,以Java中操作物件的習慣來插入數據至資料庫中,當然儲存數據之後,更重要的是如何將資料讀 出,Hibernate中也可以讓您不寫一句SQL,而以Java中操作物件的習慣來查詢數據。
直接來看個範例:
- HibernateDemo.java
package onlyfun.caterpillar; import java.util.Iterator; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Expression; public class HibernateDemo { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); Criteria criteria = session.createCriteria(User.class); // 查詢user所有欄位 Iterator users = criteria.list().iterator(); System.out.println("id \t name/age"); while(users.hasNext()) { User user = (User) users.next(); System.out.println(user.getId() + " \t " + user.getName() + "/" + user.getAge()); } // 查詢user中符合條件的欄位 criteria.add(Expression.eq("name", "caterpillar")); users = criteria.list().iterator(); System.out.println("id \t name/age"); while(users.hasNext()) { User user = (User) users.next(); System.out.println(user.getId() + " \t " + user.getName() + "/" + user.getAge()); } session.close(); HibernateUtil.shutdown(); } }
Criteria對SQL進行封裝,對於不甚瞭解SQL的開發人員來說,使用Criteria也可以輕易的進行各種數據的檢索,您也可以使用 Expression設定查詢條件,並將之加入Criteria中對查詢結果作限制,Expression.eq()表示設定符合條件的查詢,例如 Expression.eq("name", "caterpillar")表示設定查詢條件為"name"欄位中為"caterpillar"的資料。
先來看一下執行結果:
Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ id name/age 1 caterpillar/30 2 bush/20 Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name=? id name/age 1 caterpillar/30 |
Criteria是物件導向式的查詢方式,讓不瞭解SQL的開發人員也可以輕易進行各項查詢,但Criteria的API目前還不是很完善,而 Hibernate鼓勵的查詢方式,是透過HQL(Hibernate Query Language)來進行,直接來看個實例:
- HibernateDemo.java
package onlyfun.caterpillar; import java.util.Iterator; import org.hibernate.Query; import org.hibernate.Session; public class HibernateDemo { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); // 使用HQL建立查詢 Query query = session.createQuery("from User"); Iterator users = query.list().iterator(); System.out.println("id \t name/age"); while(users.hasNext()) { User user = (User) users.next(); System.out.println(user.getId() + " \t " + user.getName() + "/" + user.getAge()); } System.out.println(); // 使用HQL建立查詢 query = session.createQuery("from User user where user.name like ?"); // 設定查詢參數 query.setParameter(0, "caterpillar"); users = query.list().iterator(); System.out.println("id \t name/age"); while(users.hasNext()) { User user = (User) users.next(); System.out.println(user.getId() + " \t " + user.getName() + "/" + user.getAge()); } session.close(); HibernateUtil.shutdown(); } }
執行結果:
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_ id name/age 1 caterpillar/30 2 bush/20 Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_ where user0_.name like ? id name/age 1 caterpillar/30 |
透過Query介面,您可以先設定查詢參數,之後透過setXXX()等方法,將指定的參數值填入,而不用每次都撰寫完整的HQL,Query的 setParameter()方法第一個參數是指定 ? 出現的位置,從 0 開始,第二個參數則是設定查詢條件。
相关推荐
- **第二个Hibernate程序实例**:进一步探索更复杂的映射和查询操作。 #### 四、配置Hibernate Hibernate作为ORM解决方案,底层依赖于JDBC来操作数据库。因此,首先需要获取相应的JDBC驱动程序。本例中使用MySQL...
在开始第一个Hibernate项目之前,你需要下载Hibernate的JAR包,并将其添加到项目的类路径中。同时,还需要配置Hibernate的主配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、方言等设置。 3. 实体类与映射...
【我的第一个Hibernate程序】这篇文章是关于初学者如何创建并运行第一个Hibernate程序的详细教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的编程,简化了数据...
2. **第二个Hibernate案例**: - 进一步扩展,不仅添加记录,还包括更新、删除和查找操作,展示了Hibernate的完整CRUD功能。 ### 总结 Hibernate通过ORM技术将Java对象与关系数据库无缝连接,简化了开发流程,...
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
本篇将基于“学习Hibernate第二天”的主题,结合“源码”和“工具”这两个标签,深入探讨Hibernate的一对一主键关联双向映射,以及如何在实际开发中利用这一特性。 在Java对象关系映射(ORM)框架中,数据模型通常...
【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...
2. **编写测试代码**:例如,在测试代码中,当执行两次相同的查询时,第二次查询将直接从查询缓存中获取结果,而不是再次执行数据库查询。 然而,需要注意的是,查询缓存可能引发“n+1”问题。当从查询缓存中获取...
"第一个手写Hibernate"项目旨在帮助开发者深入理解Hibernate的工作原理,通过手动编写相关代码,以实践的方式来学习和掌握Hibernate的核心概念。 **一、Hibernate简介** Hibernate是一个开源的ORM框架,它允许...
本书由互联网上影响广泛的开放文档OpenDoc系列自由文献首份文档“Hibernate开发...深入浅出hibernate(PDF)第二部分,深入浅出hibernate(PDF)第三部分全部下载,并解压到一个地方才可以正常解压阅读.给大家带来不便望谅解.
《图灵程序设计丛书·Hibernate实战(第2版)》通过一个应用将数百个例子融合起来,不仅深入剖析了Hibernate 3.2和Java Persistence丰富的编程模型。还深刻阐述了数据库设计、ORM和优化等方面的基本原则、策略和最佳...
3. spring-hibernate2-2.0-m2.jar:这是第二个主要版本的第二个里程碑,版本号为2.0。 4. spring-hibernate2-2.0-m1.jar:与上面的文件类似,但这里是第二个里程碑的首个版本。 这些jar文件包含了Spring与Hibernate...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
#### 二、书籍内容概述 本书不仅是一本教程和参考指南,还深入介绍了如何开发和优化工业级别的Hibernate应用程序。作者们按照从简单到复杂的顺序逐步介绍概念,并通过丰富的实例来解释每一个细节。以下是本书覆盖的...
在本题目中,我们需要使用 Hibernate 框架来开发一个基于 WEB 的招标管理系统。以下是针对这个项目的详细知识点和实现步骤: 1. **Hibernate 框架**:Hibernate 是一个 Java ORM(对象关系映射)框架,它允许开发者...
《孙卫琴Hibernate源码解析第二部分》 在IT领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者与数据库之间的交互。孙卫琴老师的“Hibernate源码解析”系列深入剖析了Hibernate的内部...
在本文中,我们将深入探讨如何创建Hibernate的第一个例子,帮助初学者快速入门。** **一、Hibernate 简介** Hibernate 提供了丰富的API,简化了Java应用程序与关系数据库之间的交互。它通过XML配置文件或注解来定义...
"第一个Hibernate代码, Hello Hibernate" 这个标题表明我们将要探讨的是一个初学者级别的Hibernate教程,可能是通过一个简单的项目或示例来介绍如何使用Hibernate框架。Hibernate是一个开源的对象关系映射(ORM)...
- Hibernate提供了第一级缓存(Session缓存)和第二级缓存(可选),以提高性能并减少对数据库的访问。 在学习这个实例的过程中,你需要理解每个步骤的目的和作用,同时熟悉Hibernate的主要API。实践是掌握知识的...
二级缓存通常由第三方插件如Ehcache、Infinispan等提供,这些插件实现了JCache(JSR-107)标准,与Hibernate无缝集成。 ### 3. 二级缓存配置 在Hibernate配置文件(hibernate.cfg.xml)中,我们需要添加二级缓存...