1、利用Session接口提供的load方法或者get方法
2、Hibernate提供的主要查询方法
1)Criteria Query(条件查询)的步骤:
(1)通过Session来创建条件查询对象Criteria
Criteria criteria = session.createCriteria(Course.class);
(2)构建条件---创建查询条件对象Criterion
Criterion criterion1 = Property.forName("id").ge(39);//通过Property来创建
Criterion criterion2 = Restrictions.le("cycle", 5); //通过Restrictions来创建
(3)查询对象关联条件
criteria.add(criterion1);
(4)执行条件查询
List<Course> courses = criteria.list();
2)HQL(Hibernate Qurey Language)
特点: 语法上与SQL类似; 完全面向对象的查询; 支持继承、多态、关联
(1) FROM子句
例如:查询所有的学生实例
Query query=session.createQuery("from Student");
query.list();
(2) SELECT子句
选择哪些对象和属性返回到结果集
A、SELECT语句后可以跟多个任意类型的属性,返回结果保存在Object类型的数组中
//A、B、C、都是查询学生的姓名和年龄
Query query=session.createQuery("select stu.name,stu.age from Student as stu");
List<Object[]> os=query.list();//返回的Object数组中有两个元素,第一个是姓名,第二个是年龄
B、SELECT语句后可以跟多个任意类型的属性,返回结果也可以保存在List中
Query query=session.createQuery ("select new List(stu.name,stu.age) from Student as stu");
List<List> lists=query.list();
C、SELECT语句后可以跟多个任意类型的属性,返回结果也可以是一个类型安全的POJO对象
Query query=session.createQuery
("select new Student(stu.name,stu.age) from Student as stu");
List<Student> stuList=query.list();//注意:Student类必须有Student(String,int)的构造方法
D、SELECT子句中可以使用聚集函数、数学操作符、连接
支持的聚集函数:avg、sum、min、max、count ….
(3) WHERE子句,限制返回结果集的范围
(4) ORDER BY子句,对返回结果集进行排序
/**
* hql 查询语句
*/
public void query(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select p.pname , p.page from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
Object object[] = ( Object[])list.get(i);
for ( int k = 0 ; k < object.length ; k ++ ) {
System.out.println( object[k] );
}
}
}
/**
* hql 查询语句 new List ()
*/
public void show(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new List( p.pname , p.page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List<List> list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( (list.get(i)));
}
}
/**
* hql 查询语句 new Map () ;
*/
public void show1(){
Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sf = configuration.buildSessionFactory();
Session session = sf.openSession();
//Transaction t = session.beginTransaction();
String hql = " select new Map( p.pname as pname, p.page as page ) from Person p where p.page > 20 " ;
Query query = session.createQuery( hql );
List list = query.list();
System.out.println( list.size() );
for ( int i = 0 ; i < list.size() ; i ++ ) {
System.out.println( ((HashMap)list.get(i)).get("pname"));
System.out.println( ((HashMap)list.get(i)).get("page"));
}
}
分享到:
相关推荐
首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。分页查询是Hibernate中常用的一种功能,用于在大量...
通过这个过程,开发者可以熟悉Hibernate的基本工作流程,理解如何使用Hibernate来操作数据库。 #### 配置文件 Hibernate的配置文件通常是指`hibernate.cfg.xml`,它用于指定数据库连接信息、指定使用哪个方言...
### Hibernate Caching 知识点详解 #### 一、什么是缓存(Caching) 缓存是一种优化数据库应用程序的技术,它的设计目的是减少应用与...对于开发基于 Hibernate 的大型应用来说,熟悉和掌握这些缓存技术是非常重要的。
在实际开发中,理解并熟练使用Hibernate 3.2.6的关键在于掌握其配置、实体映射、查询方式、事务处理等方面的知识。开发者需要了解如何创建Hibernate配置文件,如何定义实体类,如何编写HQL或Criteria查询,以及如何...
Hibernate Search将HQL与全文查询相结合,允许开发者使用HQL中已经熟悉的查询语法来进行全文搜索。这种转换使得从传统查询到全文搜索的过渡变得非常平滑,从而大大降低了学习曲线。 在高级搜索功能方面,Hibernate ...
Hibernate,作为一款广泛应用的Java对象关系映射(ORM)框架,为开发者提供了便捷的数据持久化解决方案。源代码的学习是理解其工作原理、优化应用的关键。本文将基于Hibernate 3.2.5的源码,结合Eclipse开发环境,...
总的来说,Hibernate 3.5提供了一个强大且灵活的ORM解决方案,简化了Java应用的数据库操作,但同时也需要注意其潜在的性能影响和设计复杂性。熟悉和掌握Hibernate的核心概念和用法,将使你在Java开发中受益匪浅。
总结,这个.NET的Hibernate练习项目将涉及理解ORM概念,学习NHibernate的配置和使用,掌握对象到数据库的映射,以及执行查询和管理事务的方法。通过实践,开发者可以深化对.NET平台下数据持久化机制的理解。
本书不仅涵盖了Hibernate的基本使用方法,还包括了作者在实际项目中的经验和从Hibernate官方论坛中获得的技术洞见。 #### 二、准备工作 在开始使用Hibernate之前,有一些必要的准备工作需要完成: 1. **下载并...
3. **查询语言**:JPA引入了一种名为JPQL(Java Persistence Query Language)的查询语言,这是一种面向对象的查询语言,可以用来执行各种查询操作,而不必直接编写SQL语句。这有助于降低应用与数据库之间的耦合度。...
Hibernate,作为一款优秀的开源Java对象关系映射(ORM)框架,为开发者提供了便捷的数据持久化解决方案。本文将详细探讨Hibernate 2.1.8这一历史版本,帮助有特定需求的朋友们更好地理解和运用这个经典框架。 一、...
7. **Query/Criteria API**:使用Session的createQuery或createCriteria方法执行SQL查询。 **五、学习与实践** 学习“hibernate例子程序”,你可以: 1. 理解实体类与数据库表的关系。 2. 掌握配置文件的编写,包括...
Hibernate是由 Gavin King 创建的一个开源项目,它提供了一种在Java应用中持久化对象到关系数据库的解决方案。通过ORM,Hibernate将对象模型与关系数据库模型进行映射,使得开发人员可以使用面向对象的方式来处理...
8. 基于XML的查询:Hibernate允许使用HQL(Hibernate Query Language)或Criteria API进行查询,它还支持查询XML文件中的数据,这在某些特定的业务场景下可能非常有用。 9. Hibernate的配置和管理:需要对Hibernate...
不过,为了有效地利用Hibernate,开发者需要熟悉其API,理解ORM的工作原理,以及如何优化查询和配置以适应特定的应用需求。 在部署和运行基于Hibernate的应用时,需要注意版本兼容性问题,确保所有依赖库的版本与...