`

Hibernate学习之六-------Session,Query

阅读更多

一.Session  

1.Session介绍,作用,使用

 

The main runtime interface between a Java application and Hibernate. This is the central API class abstracting the notion of a persistence service.

The lifecycle of a Session is bounded by the beginning and end of a logical transaction. (Long transactions might span several database transactions.)

The main function of the Session is to offer create, read and delete operations for instances of mapped entity classes.

 

Session设计是非线程安全的,也就是说一个Session实例同时只可由一个线程使用,同一个Session实例的多线程的并发调用将会引发难以预知的错误。

 

A typical transaction should use the following idiom:

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }
 

If the Session throws an exception, the transaction must be rolled back and the session discarded. The internal state of the Session might not be consistent with the database after the exception occurs.

 

2.Session的方法

  • save
       新增名为“zhangsheng”的用户
       Tuser user = new Tuser();
       user.setName("zhangsheng");
       session.save(user);
    get cf load
  • get

    if there is no such persistent instance return null
  • load

    You should not use this method to determine if an instance exists (use get() instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error.
  • delete

    //假设T_user表中存在id=1的记录
    Tuser user = (Tuser)session.get(Tuser.class,new Integer(1));
    session.delete(user);

    //通过Query接口进行基于HQL删除操作
    String hql = "delete Tuser where id = 1";
    Query query = session.createQuery(hql);
    query.executeUpdate();
  • 通过Query接口进行数据查询:
    String hql = "from Tuser user where user.name like ?";
    Query query = session.createQuery(hql);
    List list = query.list();
    Iterator it = list.iterator();
    while(it.hasNext()){
      Tuser user = (Tuser)it.next();
      System.out.println(user.getName());
    }
  • 通过Criteria接口进行数据查询:
    Criteria criteria = session.createCriteria(Tuser.class);
    criteria.add(Expression.eq("name","Cartier"));
    List list = criteria.list();
    Iterator it = list.iterator();
    while(it.hasNext()){
      Tuser user = (Tuser)it.next();
      System.out.println(user.getName());
    }

 

 Query和Criteria作为Hibernate数据查询接口,提供了对查询条件封装的机制,两者不同之处在于,Query面向HQL和Native SQL 而Criteria则提供了面向对象的查询模式。

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate-nosession

    nosession模式并不意味着完全不使用Hibernate,而是尽量减少对Session的依赖,转而使用其他API,例如Query或Criteria API来执行数据库查询。 在实际的代码案例中,我们可以利用SessionFactory的openSession()方法来...

    hibernate-release-5.2.10

    4. **查询语言**:HQL(Hibernate Query Language)是面向对象的查询语言,类似于SQL,但更贴近Java对象。此外,还有Criteria API和JPQL(Java Persistence Query Language)供选择。 5. **事务管理**:Hibernate...

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    这篇博客"Hibernate学习一--注解方式自动建表"主要探讨了如何使用Hibernate的注解来实现数据库表的自动化创建。 在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中插入信息的方式,这些信息可以被...

    hibernate-core-5.0.11.Final.jar

    Hibernate,作为Java领域中最著名的对象关系映射(ORM)框架之一,极大地简化了数据库操作,使得开发者能够以面向对象的方式处理数据。本文将重点探讨`hibernate-core-5.0.11.Final.jar`的核心源码,帮助读者深入...

    Hibernate hibernate-core-1a8aca9.ta

    Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,极大地简化了数据库操作,使得开发者能够用面向对象的方式来处理数据,而无需关注底层的SQL语句。`hibernate-core-1a8aca9.ta`是Hibernate的核心组件...

    hibernate-release-5.3.2.Final

    Hibernate ORM,作为Java领域最著名的对象关系映射框架之一,自诞生以来就深受开发者喜爱。2018年7月5日,Hibernate发布了其最新版本——5.3.2.Final,带来了诸多改进和新特性,为开发者提供了更为高效、稳定的持久...

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

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

    hibernate-release-5.0.7.Final.zip

    - Criteria API:提供了一种更灵活、更类型安全的方式来执行查询,替代了传统的HQL(Hibernate Query Language)。 - Object-Relational Mapping:通过XML或注解方式定义实体类和数据库表之间的映射关系,实现对象...

    hibernate-distribution-3.5.0-Final-dist文档

    3. **Session**: Session是Hibernate的主要工作单元,用于在数据库和对象之间建立临时的、事务性的联系。它负责管理对象的状态,执行查询,并处理对象的持久化。 4. **Transaction**: 在Hibernate中,事务管理是...

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

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

    最新 hibernate-release-4.2.13.Final.tgz

    2. 数据库连接与会话:学习如何配置Hibernate,创建SessionFactory,以及如何打开和关闭Session。 3. CRUD操作:掌握如何通过Hibernate进行增删改查的基本操作。 4. 查询语言:理解HQL(Hibernate Query Language)...

    hibernate-orm-master.zip

    它的核心组件包括:Session、SessionFactory、Query等,这些组件共同构建了ORM桥梁。 二、SessionFactory与Session SessionFactory是Hibernate的工厂类,负责创建Session实例。它是线程安全的,通常在整个应用程序...

    Hibernate实战----创建RedSaga论坛

    8. **查询语言HQL与 Criteria API**:学习使用Hibernate Query Language(HQL)或Criteria API进行复杂的数据库查询。 9. **异常处理**:熟悉Hibernate的异常体系,如何捕获并处理可能出现的数据库操作异常。 10. ...

    hibernate-release-4.2.4.Final.zip

    8. **HQL(Hibernate Query Language)**: Hibernate 提供了自己的查询语言HQL,它是面向对象的,与SQL类似但更接近Java,可以方便地进行对象级别的查询,避免直接写SQL带来的麻烦。 9. **事务管理**:Hibernate...

    hibernate查询语言--HQL

    **正文** Hibernate 查询语言 HQL(Hibernate Query Language)是Hibernate框架提供的一种面向对象的查询语言,它是对SQL的封装,使得开发者...通过学习和实践,开发者可以更加熟练地运用Hibernate进行数据库操作。

    hibernate源码release-4.1.4.Final版

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

    hibernate-release-4.3.1.Final.zip

    同时,Hibernate提供了HQL(Hibernate Query Language)和Criteria API等高级查询方式,使得查询更加灵活和强大。 总的来说,这个压缩包是Hibernate的一个完整发行版,包含所有必要的组件,适合于基于SSH框架的Java...

    hibernate-distribution-3.3.2.GA-dist

    2. **会话接口**:Session是Hibernate的主要工作接口,用于执行CRUD(创建、读取、更新和删除)操作,同时提供事务管理和缓存管理功能。 3. **查询语言HQL**:Hibernate Query Language(HQL)是一种面向对象的查询...

    hibernate-distribution-3.5.6-Final.rar

    这些文档是学习和理解Hibernate功能、配置以及最佳实践的重要资源。通过阅读这些文档,开发者可以了解到如何将Java对象映射到数据库表,以及如何使用Hibernate进行数据操作,如CRUD(创建、读取、更新和删除)操作。...

Global site tag (gtag.js) - Google Analytics