Hibernate Criteria查询详解与示例

需积分: 11 8 下载量 145 浏览量 更新于2024-07-13 收藏 1.52MB PPT 举报
"这篇资料主要介绍了Hibernate框架中的Criteria查询方式,包括如何查询特定名称的用户、筛选年龄大于特定值的用户以及同时满足多个条件的查询。资料还提及了Hibernate在软件架构中的位置以及持久层的基本概念和实现模式。" 在Java开发中,Hibernate是一个流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库交互。Criteria查询是Hibernate提供的一个强大且灵活的API,用于构建动态查询,无需编写SQL语句。在这个示例中,Criteria查询被用来执行以下操作: 1. 查询名为"John"的用户: ```java Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.eq("name", "John")); ``` 这段代码创建了一个Criteria实例,针对User类,然后添加了一个限制条件,即name属性必须等于"John"。 2. 查询所有年龄大于18岁的用户: ```java Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.gt("age", new Integer(18))); ``` 这里,Criteria实例针对User类创建,然后添加了一个条件,要求age属性大于18。 3. 查询所有年龄大于20岁且小于30岁的用户: ```java Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.gt("age", new Integer(20))); criteria.add(Restrictions.lt("age", new Integer(30))); ``` 这个例子中,两个条件被添加到Criteria,表示查询的用户年龄必须同时大于20和小于30。 持久层在软件架构中扮演着重要角色,它负责数据的存储和检索。在Hibernate教程中,提到了两种常见的持久层实现模式: 1. 混杂模式:在这种模式下,业务类直接包含JDBC访问代码,持久化逻辑与业务逻辑混合在一起,不够清晰和易于维护。 2. 基于DataClass的持久层实现:在这种模式中,引入了DataClass作为业务对象和持久层之间的桥梁,通常采用DAO(Data Access Object)模式。DataClass包含了业务对象(DomainClass/Object)和数据访问类(DataAccessorClass),其中DomainClass封装了业务逻辑,而DataAccessorClass负责实际的数据库交互。 Hibernate的体系结构包括映射文件、Hibernate接口以及DAO模式等组件,它通过IoC(Inversion of Control)容器如Spring来实现依赖注入和事务管理,提供了强大的持久化支持。学习Hibernate不仅可以提高数据库操作的效率,还能提升应用的可维护性和扩展性。理解并熟练掌握Hibernate的Criteria查询和其他高级特性,对于Java开发者来说是非常有价值的。