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

hibernate怎样查询数据库里面的所有数据,第1张

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 = HibernateUtilsgetFactory();

session = sessionFactorygetCurrentSession();

tx = sessionbeginTransaction();

/

使用session对象的createQuery方法创建Query对象。

参数为hql语句

使用QUERY对象的list方法获取数据集合

/

Query query =sessioncreateQuery("from UserEntity");

List<UserEntity> list = querylist();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

Systemoutprintln(userEntity);

}

txcommit();

} catch (Exception e) {

txrollback();

}finally{

sessionFactoryclose();

}

}

2、criteria

(1)使用该对象不需要写hql语句,只需要指定实体类。

(2)使用方法:首先创建criteria对象,然后调用list返回数据集合。

@Test

public void test12(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtilsgetFactory();

session = sessionFactorygetCurrentSession();

tx = sessionbeginTransaction();

/

使用session对象的createCriteria方法创建criteria对象。

使用criteria对象的list方法获取数据集合

/

Criteria criteria =sessioncreateCriteria(UserEntityclass);

List<UserEntity> list = criterialist();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

Systemoutprintln(userEntity);

}

txcommit();

} catch (Exception e) {

txrollback();

}finally{

sessionFactoryclose();

}

}

3、SQLQuery

(1)使用该对象,需要写底层的SQL语句。

(2)实现方法:首先创建该对象,然后调用list。

@Test

public void test13(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtilsgetFactory();

session = sessionFactorygetCurrentSession();

tx = sessionbeginTransaction();

/

使用session对象的createSQLQuery方法创建SQLQuery对象。

使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

/

SQLQuery qQLQuery =sessioncreateSQLQuery("select from t_user");

List<Object[]> list = qQLQuerylist();

//使用forEach遍历集合

for (Object[] objects : list) {

Systemoutprintln(ArraystoString(objects));

}

txcommit();

} catch (Exception e) {

txrollback();

}finally{

sessionFactoryclose();

}

}

(3)数组转换成对象

@Test

public void test13(){

SessionFactory sessionFactory = null;

Session session = null;

Transaction tx = null;

try {

sessionFactory = HibernateUtilsgetFactory();

session = sessionFactorygetCurrentSession();

tx = sessionbeginTransaction();

/

使用session对象的createSQLQuery方法创建SQLQuery对象。

使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组

/

SQLQuery qQLQuery =sessioncreateSQLQuery("select from t_user");

//将数组装载进实体中

qQLQueryaddEntity(UserEntityclass);

List<UserEntity > list = qQLQuerylist();

//使用forEach遍历集合

for (UserEntity userEntity : list) {

Systemoutprintln(userEntity);

}

txcommit();

} catch (Exception e) {

txrollback();

}finally{

sessionFactoryclose();

}

}

通过Hibernate获取数据可以使用:

1。Session的get()和load()方法,这两方法至少需要传递一个类模板和要查询的对象的id,因为Hibernate中区分对象时通过对象的主键(id)来区分的。他们都只能返回一个结果,不同的是,get()方法在没有查询到数据时会返回一个NULL,而load()方法会抛出ObjectNotFoundException的异常,且load()方法支持延迟加载。

2。Query对象的iterator()和list()方法,可以返回一个结果集。list()方法不支持延迟加载,而iterator()方法支持延迟加载,即先得到结果集的所有id,然后在访问对象属性的时候才会真正的去执行SQL语句根据id查询出对应的信息。

3。使用Hibernate提供的HQL语言来查询数据。HQL语言是Hibernate官方推荐使用的语言,它可以提供丰富的,面向对象的持久化数据 *** 作。如:查询Customer中name="张三"的人员的信息,使用HQL语句Stringhql = "from CustomerPO where CustomerPOname=:cName";Query query =sessioncreateQuery(hql);

HQL语言是面向对象的,所以from后面不是数据表的名称,而是PO(持久化对象)对象的类名,where条件也不是数据表字段,而是PO的属性,其中:cName是一个展位符,如同在JDBC中使用的‘?’一样的效果。要执行HQL语句需要Query来执行,通过Session得到Query对象,设置占位符的值querysetParmater("cName","张三");接下来调用Query的list()方法得到结果集Listlist = querylist();在HQL语句中同样可以使用order by、Groupby、having、desc、asc等SQL语言的关键字,只是需要注意,这里只用的是对象及其属性,而不是数据表和数据字段,查询条件出来在HQL语句中只用SQL关键字外,还可以使用Restrictions来设置条件criteriaadd(Restrictionseq("name","张三"))。还可以使用Criteria来执行HQL语句,使用方法和Query基本相同。

Restrictions条件查询设置有:eq()等于、not()不等于、gt()大于、lt()小于 、le()小于等于、isNull()等于空、in()等于范围内的某值、between()在两值之间、like()字符串匹配、and()逻辑与、or()逻辑或、not()逻辑非。

你先说明你要实现什么,HIBERNATE主要可以针对数据库生成一个HIBERNATE DAO类方法,如果实现购物系统的订单的话,你在生长每个POJO后,在业务层把这个POJO声明出来,然后再对应每个表单内的text的name对应每个POJO的名字,他就会自动到每个对象中,用的时候在NEW出这个POJO就可以保存客户点击页面时所选的物品。

你可以用spring的hibernateTemplate啊,里面有很多写好的方法,

基本的增删改查都有,不知道的话百度一下,有很多例子,大致过程如下:

1首先根据form传来的id得到User对象

2然后判断User是否为空,为空的话新建一个User对象

否则直接用User对象的set方法保存新的属性,然后saveOrUpdate就行了

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

扩展资料:

发展历程

2004年,整个Java社区开始从实体bean向Hibernate转移,特别是在Rod Johnson的著作《Expert One-on-One J2EE Development without EJB》出版后,由于这本书以扎实的理论、充分的论据和详实的论述否定了EJB,提出了轻量级敏捷开发理念之后,以Hibernate和Spring为代表的轻量级开源框架开始成为Java世界的主流和事实标准。在2004年Sun领导的J2EE50标准制定当中的持久化框架标准正式以Hibernate为蓝本。

2006年,J2EE50标准正式发布以后,持久化框架标准Java Persistent API(简称JPA)基本上是参考Hibernate实现的,而Hibernate在32版本开始,已经完全兼容JPA标准。

参考资料来源:百度百科-开放源代码

参考资料来源:百度百科-Hibernate

以上就是关于hibernate怎样查询数据库里面的所有数据全部的内容,包括:hibernate怎样查询数据库里面的所有数据、从hibernate中获取的connection怎么设置remarksreporting属性、用hibernate怎么实现购物系统的订单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10145516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存