当前位置:首页>开发>正文

Hibernate有哪几种查询数据的方法 hibernate怎样查询数据库里面的所有数据

2023-05-31 03:15:18 互联网 未知 开发

 Hibernate有哪几种查询数据的方法 hibernate怎样查询数据库里面的所有数据

Hibernate有哪几种查询数据的方法

转录: 从点到面,讲讲hibernate查询的6种方法。分别是HQL查询 ,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。 如果单纯的使用hibernate查询数据库只需要懂其中的一项就可以完成想要实现的一般功能

hibernate怎样查询数据库里面的所有数据

Hibernate查询所有数据的操作方式有三种。
1、Query
(1)使用该方法查询时,不需要编写sql语句,但是需要编写hql(Hibernate Query Language)语句,该语句是Hibernate查询语言。
(2)hql语言操作的是实体类和实体类的属性,比如查询所有数据的hql语句为:from 实体类名称。
(3)使用方法:首先创建Query对象,然后调用该对象的List方法返回数据集合。

@Test
public void test11(){
SessionFactory sessionFactory = null
Session session = null
Transaction tx = null
try {
sessionFactory = HibernateUtils.getFactory()
session = sessionFactory.getCurrentSession()
tx = session.beginTransaction()
/**
* 使用session对象的createQuery方法创建Query对象。
* 参数为hql语句
* 使用QUERY对象的list方法获取数据集合
*/
Query query =session.createQuery("from UserEntity")
Listlist = query.list() //使用forEach遍历集合 for (UserEntity userEntity : list) { System.out.println(userEntity) } tx.commit() } catch (Exception e) { tx.rollback() }finally{ sessionFactory.close() } } 2、criteria (1)使用该对象不需要写hql语句,只需要指定实体类。 (2)使用方法:首先创建criteria对象,然后调用list返回数据集合。 @Test public void test12(){ SessionFactory sessionFactory = null Session session = null Transaction tx = null try { sessionFactory = HibernateUtils.getFactory() session = sessionFactory.getCurrentSession() tx = session.beginTransaction() /** * 使用session对象的createCriteria方法创建criteria对象。 * 使用criteria对象的list方法获取数据集合 */ Criteria criteria =session.createCriteria(UserEntity.class) List list = criteria.list() //使用forEach遍历集合 for (UserEntity userEntity : list) { System.out.println(userEntity) } tx.commit() } catch (Exception e) { tx.rollback() }finally{ sessionFactory.close() } } 3、SQLQuery (1)使用该对象,需要写底层的SQL语句。 (2)实现方法:首先创建该对象,然后调用list。 @Test public void test13(){ SessionFactory sessionFactory = null Session session = null Transaction tx = null try { sessionFactory = HibernateUtils.getFactory() session = sessionFactory.getCurrentSession() tx = session.beginTransaction() /** * 使用session对象的createSQLQuery方法创建SQLQuery对象。 * 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组 */ SQLQuery qQLQuery =session.createSQLQuery("select * from t_user") List list = qQLQuery.list() //使用forEach遍历集合 for (Object[] objects : list) { System.out.println(Arrays.toString(objects)) } tx.commit() } catch (Exception e) { tx.rollback() }finally{ sessionFactory.close() } } (3)数组转换成对象 @Test public void test13(){ SessionFactory sessionFactory = null Session session = null Transaction tx = null try { sessionFactory = HibernateUtils.getFactory() session = sessionFactory.getCurrentSession() tx = session.beginTransaction() /** * 使用session对象的createSQLQuery方法创建SQLQuery对象。 * 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组 */ SQLQuery qQLQuery =session.createSQLQuery("select * from t_user") //将数组装载进实体中 qQLQuery.addEntity(UserEntity.class) List list = qQLQuery.list() //使用forEach遍历集合 for (UserEntity userEntity : list) { System.out.println(userEntity) } tx.commit() } catch (Exception e) { tx.rollback() }finally{ sessionFactory.close() } }

Hibernate的查询是怎么实现的?

通常是hibernate.cfg.xml中对数据库连接进行了描述,而对于每一个数据库表都有一个pojo类描述和xml描述,比如数据库中有user表,则对应有User.java这个pojo类和User.hbm.xml描述。当session.get(Class,Object)的时候,Hibernate框架会通过上面说的配置文件获取要获取的对象内部细节,并生成sql语句提交给数据库,根据数据库返回的数据再封装成你要的对象。