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怎么实现购物系统的订单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)