`
newleague
  • 浏览: 1483430 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

hibernate实例简析-hibernate_hql(三)

阅读更多

1、对象导航查询,在hql中采用 . 进行导航【重要】
 参见:ObjectNavQueryTest.java

List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();
   for (Iterator iter=students.iterator(); iter.hasNext();) {
    String name = (String)iter.next();
    System.out.println(name);
   }

 

2、外置命名查询
 * 在映射文件中采用<query>标签来定义hql
 * 在程序中采用session.getNamedQuery()方法得到hql查询串
 参见:Student.hbm.xml、NameQueryTest.java

List students = session.getNamedQuery("searchStudents")
        .setParameter(0, 10)
        .list();
   for (Iterator iter=students.iterator(); iter.hasNext();) {
    Student student = (Student)iter.next();
    System.out.println(student.getName());
   }

 

<hibernate-mapping>
 <class name="com.bjsxt.hibernate.Student" table="t_student">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
  <property name="createTime"/>
  <many-to-one name="classes" column="classesid"/>
  <filter name="filtertest" condition="id &lt; :myid"/>
 </class>
 
 <query name="searchStudents">
  <![CDATA[
   SELECT s FROM Student s where s.id<?
  ]]>
 </query>
 
 <filter-def name="filtertest">
  <filter-param name="myid" type="integer"/>
 </filter-def> 
</hibernate-mapping>

 

 

3、连接查询【重要】
 * 内连
 * 外连接(左连接/右连接) 
 参见:JoinQueryTest.java

List students = session.createQuery("select c.name, s.name from Student s inner join s.classes c").list();
   for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
   }

===

List students = session.createQuery("select c.name, s.name from Classes c left join c.students s").list();
   for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
   }

===

List students = session.createQuery("select c.name, s.name from Classes c right join c.students s").list();
   for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
   }

4、

for(int i=0; i<10; i++){
    
     Classes classes = new Classes();
     classes.setName("班级"+i);
     session.save(classes);
     
     for(int j=0; j<10; j++){
      Student student = new Student();
      student.setName("班级"+i+"的学生"+j);
      student.setCreateTime(randomDate("2008-01-01","2008-03-01"));
      
      //在内存中建立由student指向classes的引用
      student.setClasses(classes);
      session.save(student);
     }
    }
    
    for(int i=0; i<5; i++){
     Classes classes = new Classes();
     classes.setName("无学生班级"+i);
     session.save(classes);
    }
    
    for(int i=0; i<10; i++){
     Student student = new Student();
     student.setName("无业游民"+i);
     session.save(student);
    }

分享到:
评论

相关推荐

    Hibernate-HQL.rar_HQL_hibernate hql

    一个关于Hibernate-HQL 的文档 内容实际而且实用

    hibernate-3.2.6-src_b.rar

    3. Query与Criteria API:这两个API提供了执行数据库查询的方式,Query基于HQL(Hibernate查询语言),Criteria API则提供了一种类型安全的查询方式。 4. Transaction:事务处理接口,Hibernate提供了JTA和JDBC两种...

    hibernate-2.1.8-all-bin_b.rar

    6. 高级查询:提供HQL(Hibernate Query Language)和 Criteria API,支持复杂的查询操作。 五、与`hibernate-2.1.8-all-bin_a.rar`的合并使用 既然提到"hibernate-2.1.8-all-bin_b.rar"与"hibernate-2.1.8-all-...

    hibernate-3.2.6-bin_b.rar

    4. **lib**:这个目录包含了Hibernate运行所需的第三方库,包括JDBC驱动、日志库、容器依赖等。理解这些库的作用和配置,有助于解决在项目集成过程中可能出现的问题。 Hibernate 3.2.6版本主要特点包括: - 支持JPA...

    Hibernate_HQL.rar_hibernate HQL_hibernate hql src

    对hibernate的hql进行了详尽的讲解

    hibernate查询语句--HQL

    hibernate查询语句--HQL hibernate查询语句--HQL

    hibernate-3.2.6-src_a.rar

    3. **查询语言HQL与Criteria API**:`Query`与`Criteria`接口提供了灵活的查询方式,源码中可看到它们如何解析HQL语句,并转化为SQL执行。 4. **第二级缓存**:Hibernate支持缓存策略,其中第二级缓存由`Cache`接口...

    Eclipse_hibernate-3.1.2_(插件

    Hibernate 3.1.2是一个稳定且广泛使用的版本,它引入了许多新特性,包括支持JPA(Java Persistence API)、优化的HQL(Hibernate Query Language)以及对JDBC 3.0和JTA(Java Transaction API)的改进。通过Eclipse...

    hibernate_hql.rar_HQL

    java数据库架构hibernate 专用语句hql的相关代码与试验

    hibernate-distribution-3.6.6.Final-dist

    4. **Criteria查询**:除了传统的HQL(Hibernate Query Language)查询,3.6.6版本还提供了Criteria API,这是一种更加面向对象的查询方式,可以动态构建查询条件,增强了代码的可读性和灵活性。 5. **实体生命周期...

    hibernate-release-4.0.0.Final.zip

    此外,HQL(Hibernate Query Language)也得到了增强,支持更多的函数和操作,提供了更强大的查询能力。 其次,4.0.0.Final版本增强了对JPA 2.0规范的支持,包括实体生命周期管理、查询注解、事务管理等方面。...

    李兴华\struts\45-使用Struts _ DAO _ Hibernate完成分页

    - 构造查询条件:在DAO层,根据当前页和每页记录数构造分页SQL或HQL(Hibernate查询语言)。 - 执行查询:使用Hibernate Session执行分页查询。 - 返回结果:将查询结果包装成业务对象或列表,传回给控制器和视图...

    hibernate-extensions-2.1.3.zip ,middlegen for hibernate

    - Criteria查询增强:允许更复杂的动态查询构建,超越了HQL(Hibernate查询语言)的限制。 - Cache管理:提供更细粒度的缓存控制,包括第二级缓存和查询缓存的优化。 - Batch处理:支持批量插入、更新和删除操作...

    Hibernate_HQL大全

    Hibernate_HQL大全

    hibernate_-annotations_中文帮助文档

    Hibernate支持使用EJBQL/HQL进行查询映射,以及本地化查询,使你能方便地进行对象查询。 4. **Hibernate独有的注解扩展** Hibernate提供了一些特有的注解,如`@Access`定义属性访问方式,`@Formula`用于定义计算...

    hibernate源码release-4.1.4.Final版

    3. Query与Criteria:提供了两种查询方式,HQL(Hibernate Query Language)是一种面向对象的查询语言,类似于SQL;Criteria API则提供了更动态、更面向对象的查询方式。 三、实体管理 Hibernate通过@Entity注解...

    hibernate-distribution-3.6.7.Final-dist.zip

    5. Query与Criteria API:提供了强大的查询功能,可以编写复杂的SQL语句,并支持HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language)。 三、实体类与映射文件 在Hibernate中,每个数据库表...

    hibernate-annotations-3.4.0.GA

    三、Hibernate Annotations 3.4.0.GA新特性 1. 支持JPA 2.0规范:此版本引入了更多的JPA标准注解,如@Inheritance、@SequenceGenerator等,增强了与Java Persistence API的兼容性。 2. 性能优化:3.4.0.GA版本针对...

    精通Java_EE项目案例-基于Eclipse_Spring_Struts_Hibernate案例

    《精通Java_EE项目案例-基于Eclipse_Spring_Struts_Hibernate案例》是针对Java企业级开发的一个深度学习资源,涵盖了从第六章到第十章的关键案例。这些章节通常会涉及实际应用开发中的核心技术和实践,旨在帮助...

    Hibernate-HQL-查询-Query资料

    在Hibernate中,HQL(Hibernate Query Language)是专为ORM设计的一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询,而不是直接使用SQL。本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及...

Global site tag (gtag.js) - Google Analytics