`
newleague
  • 浏览: 1513435 次
  • 性别: 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);
    }

分享到:
评论

相关推荐

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605.zip

    2. **HQL/SQL编辑器**:提供语法高亮和智能提示,支持HQL(Hibernate Query Language)和SQL的编写与调试。 3. **数据库连接管理**:方便地创建、编辑和测试数据库连接,支持多种数据库类型。 4. **逆向工程**:...

    hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605

    Hibernate Tools是开发者在使用Hibernate框架进行Java应用程序开发时的重要辅助工具,它为Eclipse IDE提供了强大的集成支持,包括对象关系映射(ORM)的可视化设计、逆向工程、数据库生成、HQL和SQL查询编辑等功能。...

    Hibernate-HQL.rar_HQL_hibernate hql

    三、HQL与SQL的对比 HQL的灵活性在于它可以处理对象关系,例如一对一、一对多、多对多的关系。在SQL中,处理这些关系通常需要复杂的联接操作,而在HQL中则相对简单。此外,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-tutorials_java_hibernate_Eclipse_fallenweg_

    总的来说,"hibernate-tutorials_java_hibernate_Eclipse_fallenweg_"这个资源包提供了一个全面的学习路径,涵盖了从安装配置到实际开发的所有关键步骤,对于希望掌握Hibernate的Java开发者来说是一份宝贵的资料。...

    hibernate-3.2.6-src_a.rar

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

    hibernate-release-5.4.25.Final_Hibernate5.4.25_hibernate所需jar包_源

    1. hibernate-core-5.4.25.Final.jar:包含Hibernate ORM的核心功能,如实体管理、查询语言(HQL)、事务处理等。 2. hibernate-entitymanager-5.4.25.Final.jar:提供了对JPA规范的支持,使得开发者可以使用标准的...

    hibernate-release-4.3.10.Final.zip

    - **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但操作的是对象和对象集合。 - **Criteria API**:提供动态构建查询的方式,无需预先编写查询字符串,更加安全。 6. **缓存策略**: - ...

    hibernate-core-5.0.11.Final.jar

    - `Configuration`类:负责读取和解析hibernate.cfg.xml配置文件,生成SessionFactory实例。 - `SessionFactoryImpl`:实际的SessionFactory实现,包含Session的创建逻辑和缓存管理。 - `SessionImpl`:Session的...

    hibernate_hql.rar_HQL

    三、HQL聚合函数 HQL提供了如count、sum、avg、max、min等聚合函数,用于统计和计算。例如,获取User表中最大的年龄: ```java String hql = "select max(age) from User"; Object maxAge = query.uniqueResult(); `...

    hibernate-release-4.2.4核心jar包

    首先,`hibernate-core-4.2.4.Final.jar`是Hibernate的核心组件,它包含了ORM的主要功能,如实体管理、持久化操作、查询语言(HQL)解析等。这个jar包是使用Hibernate进行开发时必不可少的部分,它定义了Hibernate API...

    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-release-4.1.4

    【标题】"hibernate-release-4.1.4" 是Hibernate...通过深入研究这个压缩包,开发者不仅可以了解Hibernate的基本用法,还能掌握更高级的功能,如事务管理、缓存策略、查询语言(HQL)等,从而提升开发效率和代码质量。

    hibernate-release-5.0.7.Final的所有jar包

    它包含了对JPA(Java Persistence API)的实现,以及Hibernate特有的特性,如 Criteria 查询、HQL(Hibernate Query Language)等。 2. **hibernate-entitymanager**: 用于支持JPA规范,提供实体管理和事务处理。...

    hibernate-release-4.3.1.Final.zip

    描述中提到"ssh框架中hibernate所需的所有jar包这里面都有",SSH通常指的是Spring、Struts和Hibernate这三种技术的组合,它们是Java企业级应用开发的常用框架。Hibernate在这里作为数据访问层,需要与其他jar包配合...

    hibernate-release-5.0.0.Final(1).zip

    3. Query:提供HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language)来执行数据库查询,也可以通过Criteria API构建动态查询。 4. Transaction:Hibernate支持事务管理,确保数据的一致性和...

Global site tag (gtag.js) - Google Analytics