第6章高级数据检索.ppt
《第6章高级数据检索.ppt》由会员分享,可在线阅读,更多相关《第6章高级数据检索.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Hibernate ORMHibernate ORM 最佳实践最佳实践第第6章章 高级数据检索高级数据检索Hibernate ORM回顾q使用动态类进行关系映射q使用组件进行关系映射q映射值类型的集合q一个持久化类对应多个表的映射2Hibernate ORM目标qQBC(query by criteria)面向对象查询方式q利用HQL和criteria连接查询qHibernate的数据检索策略3Hibernate ORMQBC数据检索qHQL示例class book private String bname;private int bversion;private String author;
2、private Date bdate;private String press;:根据用户输入的条件查询所需要的书籍.如果使用HQL查询:where的条件怎么设置?session.createQuery(from book where)QBC:Query by Criteria:以函数API的方式动态设置查询条件,组成查询语句.静态字符串查询语句4Hibernate ORMQBC查询主要类qCriteria接口:用来设置各种查询条件的利用session的方法createCriteria(“目标实体类类型”)创建criteria对象,Criteria crit=session.createCri
3、teria(“Teacher.class”);生成Criterion对象,作为查询条件.Criterion cond=Restrictions.eq(“teacherID”,new Long(102);利用Criteria接口方法add添加Criterion对象设置查询条件 crit.add(cond);调用Criteria的list方法或scroll方法执行查询语句.List results=crit.list();ScrollableResults scrollresult=crit.scroll();从List或ScrollableResults 中取出查询对象.5Hibernate O
4、RM示例6Hibernate ORM示例利用Criteria查询101号老师所带在校生和毕业生的学号及姓名:运行结果:7Hibernate ORM分析-1Criteria接口中的主要方法Criteria add(Criterion criterion):添加查询条件,作用where条件.如果说查询条件是多个并列或者是只要满足其中一个条件,怎样实现and或or逻辑操作?如:查询教师ID号=200或者教师姓名不以T或t开头的所有教师.Criteria addOrder(Order order)增加排序Criteria createAlias(String associationPath,Strin
5、g alias)关联实体属性名别名为对象实体属性设置别名来实现关联Criteria createAlias(String associationPath,String alias,int joinType)CriteriaSpecification.INNER_JOIN,CriteriaSpecification.FULL_JOINCriteriaSpecification.LEFT_JOIN,CriteriaSpecification.RIGHT_JOIN 9Hibernate ORM示例查找教师101所带学生姓名为刘的所有学生的学号及姓名对象实体属性student10Hibernate O
6、RM代码注意:createAlias()方法不会返回新的实例,还是原来的Criteria实例,这样设置Teacher与Student的关联关系.Criteria createCriteria(String associationPath,String alias)关联实体属性名返回一个新的Criteria实例11Hibernate ORM代码产生新的Criteria实例crit1Criteria setProjection(Projection projection)Projections类提供许多静态方法来产生对查询结果进行选择某些属性的投影,进行avg、max、min、count、sum等
7、聚集运算。12Hibernate ORM示例计算学生中来自成都的有多少?查询来自成都的学生的学号及姓名13Hibernate ORM代码ProjectionLis:添加投影列查询返回的list对象中含有对象数组Object,其中Object0代表sid,Object1代表sname14Hibernate ORMDetachedCriteria类q在前面例子中,在使用Criteria对象的前提必须有一个Session对象,因此这种依赖关系限制Criteria接口的使用范围。q考虑以下情况:需要在没有Session对象的情况下创建数据查询;同一个数据查询跨越多个Session对象Hibernate
8、提供一个可以脱离Session对象的查询对象:DetachedCriteriaDetachedCriteria.forClass(实体类类型)DetachedCriteria封装一个CriteriaImpl对象getSession()session对象criteria对象(脱离session)criteria.getExecutableCriteria(session)criteria对象(关联session)15Hibernate ORM示例只有关联到session后才可以list16Hibernate ORM小结17Hibernate ORMCriterion类和Restrictions类
9、1.Criterion 是 Criteria 的查询条件。2.Criteria 提供了 add(Criterion criterion)方法来添加查询条件。3.Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq(等于)、ge(大于等于)、between 等来方法的创建 Criterion查询条件(SimpleExpression 实例)4.除此之外,Restrictions 还提供了方法来创建 conjunction 和 disjunction 实例,通过往该实例的 add(Criteria)方法来增加查询条件形
10、成一个查询条件集合。18Hibernate ORMRestrictions类的方法设置Criterion查询条件19Hibernate ORMProjection和Projections类1.Projection 主要是让 Criteria 能够进行报表查询,并可以实现分组。Projection主要有 SimpleProjection、ProjectionList 和 Property 三个实现。其中 SimpleProjection 和 ProjectionList 的实例化是由内建的 Projections 来完成,如提供的 avg、count、max、min、sum 可以让开发者很容易对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 高级数据检索 高级 数据 检索
限制150内