Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。
基本规则
- HQL语法类似于SQL,也是一种select from结构的语句。但是他后面跟的不是表名和字段名,而是类名和属性名。
- HQL基本查询语法跟SQL很类似
- HQL大小写不敏感。但是,设计java类名、包名、属性名时大小写敏感。
- 包名的使用情况。比如:如果注册的实体类Emp只有一个类,那么查询时可以不加包名,hibernate会自动检索到Emp类。但是如果注册多个实体类,名字都叫Emp。此时就要增加包名来区别多个实体类。
第一个HQL查询
1 1 package com.qcf.test; 2 2 3 3 import java.util.List; 4 4 5 5 6 6 import org.hibernate.Query; 7 7 import org.hibernate.Session; 8 8 import org.hibernate.SessionFactory; 9 9 import org.hibernate.Transaction; 10 10 import org.hibernate.cfg.Configuration; 11 11 12 12 import com.qcf.po.User; 13 13 14 14 public class TestHiber { 15 15 public static void main(String[] args) { 16 16 //读取配置文件中的信息 17 17 Configuration con=new Configuration().configure(); 18 18 //获取sessionFactory对象 19 19 SessionFactory factory=con.buildSessionFactory(); 20 20 //获取Session对象 21 21 Session session=factory.openSession(); 22 22 String hql="from User"; 23 23 //创建HQL查询 24 24 Query query= session.createQuery(hql); 25 25 List list=query.list(); 26 26 //对查询的结果进行遍历 27 27 for (int i = 0; i < list.size(); i++) { 28 28 User user=(User) list.get(i); 29 29 System.out.println(user.getName()); 30 30 } 31 31 32 32 session.close(); 33 33 } 34 34 }