hibernate详解三

hibernate的几种查询方式

1、对象导航查询

2、OID查询:根据ID查询查询某一条记录,返回一个对象

3、hql查询:通过Query对象查询,写hql语句实现查询

4、QBC查询:Criteria对象

5、本地Sql查询

hql查询和本地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为延迟加载






猜你喜欢

转载自www.cnblogs.com/dsj-66/p/10887397.html
今日推荐