- Query对象
1.使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language ,hibernate提供查询语句,这个hql与普通sql语句很相似
(2)hql和sql区别:sql语句是通过数据库表和字段进行操作,hql是通过实体类和属性进行操作
2.查询所有hql语句
(1)from 实体类名称
3.Query对象使用
(1)创建Query对象
(2)调用其中的方法
package com.sq.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import com.sq.entity.User;
import com.sq.util.HibernateUtil;
/**
*@author sq
*
*/
public class QueryDemo {
@Test
public void testQuery(){
SessionFactory sessionFactory= null;
Session session = null;
Transaction tx = null;
try {
//1.调用工具类获得sessionfactory
sessionFactory = HibernateUtil.getSessionFactory();
//2.获取session
session = HibernateUtil.getSession();
//3.开启事物
tx = session.beginTransaction();
//1.创建Query对象
//方法里面写hql语句
Query query = session.createQuery("from User");
//2.调用其中的方法得到结果
List<User> list = query.list();
for(User user : list){
System.out.println(user);
}
//提交事物
tx.commit();
} catch (Exception e) {
tx.rollback();
}finally{
//关闭
sessionFactory.close();
}
}
}
- Criteria对象
1.使用这个对象查询操作,但是使用这个对象不需要写语句,直接调用方法实现
2.实现过程
(1)创建Criteria对象
(2)调用里面的方法来实现
//1.创建Criteria对象
Criteria criteria = session.createCriteria(User.class);
//2.调用里面的方法得到结果
List<User> list = criteria.list();
for(User user : list){
System.out.println(user);
}
- SQLQuery对象
1.使用hibernate时候,调用底层sql语句
2.实现过程
(1)创建SQLQuery对象
(2)调用里面的方法来实现
//1.创建SQLQuery对象
SQLQuery sqlquery = session.createSQLQuery("select * from s_user");
//2.调用里面的方法得到结果
//返回的list集合,默认里面每部分数组结构
List<Object[]> list = sqlquery.list();
for(Object[] objects : list){
System.out.println(Arrays.toString(objects));
}
(3)如果想要得到对象集合
SQLQuery query = session.createSQLQuery("select * from s_user");
query.addEntity(User.class);
List<User> list = query.list();
for(User object:list){
System.out.println(object);
}
tx.commit();