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

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

2023-06-19 08:12:50 互联网 未知 开发

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

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

3种
1)session对象的load和get方法,只能按主键查询

2)hql:语法与sql类似,但查询的是对象,支持所有的sql查询方式,可以直接返回对象集合,可以完成修改删除

3)Criteria:只能进行查询,可以不用写查询语句,通过java代码完成

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的三种查询方式。

hql提供了更接近于传统SQL语句的查询语法,容易过度吧,官方推荐使用,它提供强大的查询功能。一般使用这种查询。
Criteria查询,可移植性好,用起来也很方便,当你的查询条件很多时,可用Example创建一查询依据,查出属性与之类似的对象,代码简洁运用很方便。
Native SQL一般在遇到很复杂的查询条件时使用。
说白了,灵活运用就行,在不同情况下使用不同的解决方案,建议你多看些实例,见得多了用起来就比较容易判断该用哪一个。
如果问题解决,请点赞采纳,谢谢!!!

Hibernate数据查询

前两种性质是一样的,你看下源码就知道了:
Spring的org.springframework.orm.hibernate3.HibernateTemplate中的方法:
public List find(String queryString) throws DataAccessException {
return find(queryString, (Object[]) null)
}

public List find(final String queryString, final Object... values) throws DataAccessException {
return executeWithNativeSession(new HibernateCallback<List>() {
public List doInHibernate(Session session) throws HibernateException {
Query queryObject = session.createQuery(queryString)
prepareQuery(queryObject)
if (values != null) {
for (int i = 0 i < values.length i ) {
queryObject.setParameter(i, values[i])
}
}
return queryObject.list()
}
})
}

其实org.hibernate.impl.SessionImple里还有一种find(String hql)的。

至于Criteria,其实就是方便面向对象的编码者而设计的,让编码者省去考虑面向关系的逻辑,其实质是一样的。你可以查下源码吧。

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

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

Hibernate的查询是怎么实现的?

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

最新文章