1、对象导航查询
2、OID查询:根据ID查询查询某一条记录,返回一个对象
3、hql查询:通过Query对象查询,写hql语句实现查询
4、QBC查询:Criteria对象
5、本地Sql查询
hql语言和普通sql很相似,区别在于普通sql操作的是表和字段,hql操作的是实体类和属性
hql查询实例:
Query query = session.createQuery("from User ");
List<User> list = query.list();
Query query = session.createQuery("from User where id = ?");
query.setParameter(0,3); 0代表?的位置,从0开始,3代表id的值
List<User> list = query.list();
Query query = session.createQuery("from User ");
query.setFirstResult(0); //从哪开始查
query.setMaxResults(2); //查询几条
List<User> list = query.list();
Query query = session.createQuery("select id,name from User ");
List<User> list = query.list();
Query query = session.createQuery("select count(*) from User "); //聚合函数的使用
Integer count = Integer.valueOf(String.valueOf(query.uniqueResult()));
本地sql查询实例:
SQLQuery query = session.createSQLQuery("select * from t_user");
query.addEntity(User.class); //指定查询的类型 user ,默认是object[]
List<User> list = query.list();
SQLQuery query = session.createSQLQuery("select a.*,b.* from t_user a left jion rows b on a.id = b.pid");
query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);//指定类型为map 默认是object[]
List<Map> list = query.list();
hibernate的检索策略
1、立即查询:根据ID查询,调用get方法,一调用get方法马上发送语句操作数据库
2、延迟查询:根据ID查询,调用load方法,调用load方法不会马上操作操作数据库,只有得到对象里面的属性时才操作数据库
延迟查询又分为两种:类级别延迟、关联级别延迟
类级别延迟:根据ID查询返回实体类对象,调用load方法不会马上发送语句
关联级别延迟:如查询某个客户,再查询客户的联系人,那么查询联系人时是否需要延迟查询
在*.hbm.xml文件中配置lazy属性为false,表示立即加载。true为延迟加载
原文:https://www.cnblogs.com/dsj-66/p/10887397.html