Hibernate Criteria查询详解与示例

需积分: 33 1 下载量 46 浏览量 更新于2024-08-23 收藏 1007KB PPT 举报
"Criteria查询表达式是Hibernate框架中用于执行对象化查询的一种方式,它提供了一种面向对象的API来构建SQL查询,从而避免直接编写SQL语句,减少了与特定数据库的依赖。Criteria查询允许开发者以更加灵活和类型安全的方式组合查询条件,使得代码更加可读且易于维护。在Hibernate中,Criteria查询主要通过SessionFactory和Session对象进行操作。" Criteria查询的核心在于创建Criteria对象,这通常涉及到以下步骤: 1. 初始化SessionFactory:首先,你需要配置并构建SessionFactory。这通常通过加载hibernate.cfg.xml配置文件完成,然后调用`new Configuration().configure().buildSessionFactory();`。 2. 获取Session:SessionFactory是一个全局的、线程安全的实体,它负责管理Session。你可以通过调用SessionFactory的`openSession()`方法来获取Session对象,它是与数据库交互的主要接口。 3. 创建Criteria对象:在Session上,你可以调用`createCriteria(Class entityClass)`方法创建一个Criteria对象,传入的参数是你要查询的实体类(例如这里的User.class)。 4. 添加查询条件:Criteria对象提供了多种方法来添加查询条件,例如`add(Restrictions.eq("propertyName", value))`用于指定属性等于某个值的条件。Restrictions是Hibernate提供的一个工具类,它包含了各种条件构造方法,如eq(等于),ne(不等于),gt(大于),lt(小于),ge(大于等于),le(小于等于)等。 5. 执行查询:通过调用Criteria对象的`list()`方法,你可以执行查询并获取结果集,它返回一个List对象,包含满足条件的所有实体实例。 6. 处理查询结果:你可以遍历这个List,例如使用`Iterator`,对每个查询结果进行处理。在示例中,代码打印出每个User对象的名称。 7. 关闭资源:在完成查询后,记得关闭Session和SessionFactory以释放资源,防止内存泄漏。这通过调用`session.close()`和`sessionFactory.close()`实现。 Criteria查询的优势在于它的灵活性和可扩展性,能够方便地进行复杂的查询操作,同时保持代码的简洁和可读性。此外,由于它是由Hibernate自动生成SQL,所以对于不熟悉SQL的开发者来说,这是一个友好的选择。不过,它可能比直接使用HQL或SQL在性能上稍逊一筹,因为有额外的解析和映射过程。