【hibernate框架】面向对象的查询语法(QBE和QBC)

简介:

QBC和QBE


QBC:(Query By Criteria)
Criteria是Criterion的复数,是"标准、准则、约束"的意思。

用法:
@Test
public void testQBC() {
	Session session = sf.openSession();
	session.beginTransaction();
	//criterion 标准/准则/约束
	Criteria c = session.createCriteria(Topic.class) //from Topic
				 
	 .add(Restrictions.gt("id", 2)) //greater than = id > 2
	 .add(Restrictions.lt("id", 8)) //little than = id < 8
	 .add(Restrictions.like("title", "t_"))
	 .createCriteria("category")
	 .add(Restrictions.between("id", 3, 5)) //category.id >= 3 and category.id <=5
				 ;
	//DetachedCriterea
	for(Object o : c.list()) {
		Topic t = (Topic)o;
		System.out.println(t.getId() + "-" + t.getTitle());
	}
	session.getTransaction().commit();
	session.close();
	
}

测试结果:
Hibernate: 
    select
        this_.id as id2_1_,
        this_.category_id as category4_2_1_,
        this_.createDate as createDate2_1_,
        this_.title as title2_1_,
        category1_.id as id0_0_,
        category1_.name as name0_0_ 
    from
        Topic this_ 
    inner join
        Category category1_ 
            on this_.category_id=category1_.id 
    where
        this_.id>? 
        and this_.id<? 
        and this_.title like ? 
        and category1_.id between ? and ?

QBE:(Query By Example)
QBE是QBC的一部分
//is empty and is not empty
	//query by criteria query by example
	@Test
	public void testQBE() {
		Session session = sf.openSession();
		session.beginTransaction();
		Topic tExample = new Topic();
		tExample.setTitle("T_");
		
		Example e = Example.create(tExample)
					.ignoreCase().enableLike();
		Criteria c = session.createCriteria(Topic.class)
					 .add(Restrictions.gt("id", 2))
					 .add(Restrictions.lt("id", 8))
					 .add(e)
					 ;
					 
		
		for(Object o : c.list()) {
			Topic t = (Topic)o;
			System.out.println(t.getId() + "-" + t.getTitle());
		}
		session.getTransaction().commit();
		session.close();
		
	}

转载请注明出处:http://blog.csdn.net/acmman/article/details/43937517

相关文章
|
10天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
9 1
|
3月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
104 0
|
3月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
72 0
|
3月前
|
SQL Java 数据库连接
|
3月前
|
缓存 Java 数据库连接
什么是 Hibernate 查询语言或 HQL?
【8月更文挑战第21天】
108 0
|
3月前
|
SQL Java 数据库连接
在 Hibernate 中何时使用条件查询?
【8月更文挑战第21天】
41 0
|
3月前
|
缓存 Java 数据库连接
Hibernate 中的查询缓存是什么?
【8月更文挑战第21天】
35 0
|
3月前
|
SQL 安全 Java
|
6月前
|
SQL 缓存 Java
框架分析(9)-Hibernate
框架分析(9)-Hibernate
|
3月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
46 1