`

hibernate 5 大接口和实例

 
阅读更多
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和 Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。
·Session接口:
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的 SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的 HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:
SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个 SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:
Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:
Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

·Query和Criteria接口:
Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
以下我自己写了个HibernaeUtil,里面就是利用Configuration 创建了SessionFactory
 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil
{
    private static SessionFactory factory = null;

    static
    {
        try
        {
            Configuration config = new Configuration();
            factory = config.configure().buildSessionFactory();
        } catch (Throwable e)
        {
            System.err.println("Initial SessionFactory creation failed." + e);
            throw new ExceptionInInitializerError(e);
        }
    }

    public static Session getSession()
    {
        return factory.openSession();
    }
    
    public static Session getCurrentSession()
    {
        return factory.getCurrentSession();
    }
}



以下是利用SessionFactory 得到session,利用session得到transaction,

import java.util.Collection;
import java.util.LinkedHashSet;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.allanlxf.hibernate.association.m2m.entity.TarenaCourse;


public class CourseService
{
    public void add(TarenaCourse course)
    {
        Session session = null;
        Transaction trans = null;

        try
        {
            session = HibernateUtil.getSession();
            trans = session.beginTransaction();
            session.save(course);
            trans.commit();
        } catch (RuntimeException e)
        {
            trans.rollback();
            e.printStackTrace();
            throw e;
        } finally
        {
            session.close();
        }
    }
}


以下是Query.
 public TarenaCourse findById(int id)
    {
        TarenaCourse course = null;
        Session session = null;
        Transaction trans = null;

        try
        {
            session = HibernateUtil.getSession();
            trans = session.beginTransaction();
            Query query = session.createQuery("select course from TarenaCourse course left join fetch course.classes where course.id = :id");
            course = (TarenaCourse) query.setInteger("id", id).uniqueResult();
            trans.commit();
        } catch (RuntimeException e)
        {
            trans.rollback();
            e.printStackTrace();
            throw e;
        } finally
        {
            session.close();
        }

        return course;
    }
分享到:
评论

相关推荐

    Hibernate实例 oracel数据库

    4. **Session工厂与Session**: Hibernate的核心接口包括SessionFactory和Session。SessionFactory是线程安全的,用于创建Session,而Session是数据库会话,用于执行CRUD操作。 5. **实体类与数据库表**: 在...

    hibernate3实例包

    这个实例包可能是为了帮助开发者理解和学习如何在实际项目中使用Hibernate 4.0.0版本。通过分析示例代码,可以了解如何配置Hibernate,创建实体类,定义关联,编写HQL或Criteria查询,以及如何处理事务和缓存。同时...

    Hibernate教程03_Hibernate核心开发接口介绍

    在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI,可以进一步加深对这些概念的理解和实践。

    Hibernate核心接口

    Hibernate 的核心接口分别是 Configuration、SessionFactory、Session、Transaction 和 Query。这些核心接口在任何 Hibernate 应用程序中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制...

    hibernate实例连oracle

    5. **SessionFactory和Session**:通过SessionFactory创建Session对象,它是与数据库交互的主要接口,用于执行查询和事务管理。 为了成功运行这个项目模板,开发者需要熟悉上述技术,并正确配置所有相关组件。这...

    Spring+Hibernate+MySql的应用实例

    通过SessionFactory和Session接口,Hibernate可以进行对象持久化,将Java对象转换为数据库中的记录。 **MySQL数据库**:MySQL以其高效、稳定和易用性,成为许多Web应用的首选数据库。在本实例中,开发者需要创建...

    SpringMVC+hibernate实例

    开发者可以通过这个实例学习如何配置SpringMVC和Hibernate,理解它们之间的协作方式,以及如何编写实际的业务代码。 在这个实例中,你可以学习到以下知识点: 1. SpringMVC的配置,包括DispatcherServlet配置、视图...

    struts2+hibernate3.3+spring3.0整合实例

    Struts2、Hibernate3.3和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和依赖注入与业务逻辑管理。本实例将详细阐述如何将这三个框架整合在一起,实现一个完整的CRUD(创建...

    SpringMVC+Hibernate小实例

    通过这个小实例,初学者可以学习如何在实际项目中设置和运行SpringMVC和Hibernate。理解这两者如何协同工作,对于提升Java Web开发能力是非常有帮助的。你可以从以下几个方面进行深入学习: 1. SpringMVC的注解驱动...

    一个Hibernate的简单实例

    本实例旨在为初学者提供一个基础的Hibernate使用教程,帮助理解其基本概念和工作流程。 首先,我们需要了解Hibernate的核心组件。Hibernate框架主要由以下部分构成: 1. **Hibernate配置文件(hibernate.cfg.xml)...

    hibernate一对一实例

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了方便的数据访问接口,大大简化了数据库操作。在数据库关系模型中,一对一(One-to-One)关联是一种常见的关系类型,表示两个实体之间存在...

    springmvc+spring4+hibernate5架构搭建实例

    本实例旨在介绍如何使用最新的Spring MVC 4、Spring 4和Hibernate 5来构建一个高效、灵活且可扩展的架构。 Spring MVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了强大...

    spring_hibernate整合实例

    在实际项目中,"spring_hibernate_2"可能代表一个包含多个文件的目录,比如配置文件(如applicationContext.xml、hibernate.cfg.xml)、实体类(User.java)、DAO接口和实现(UserDao.java、UserDaoImpl.java)、...

    strut2+hibernate+mysql的实例

    Struts2、Hibernate和MySQL是Java Web开发中的三大核心技术,它们共同构成了一个强大的后端开发框架。本实例将深入探讨这三个技术如何协同工作,以及如何通过JSP进行前端展示。 Struts2作为MVC(Model-View-...

    eclipse项目Hibernate实例

    5. **SessionFactory和Session**:SessionFactory是Hibernate的核心对象,负责创建Session,而Session是与数据库交互的接口,用于执行查询、保存和更新对象。 6. **CRUD操作**:学习如何使用Criteria、HQL...

    struts+hibernate整合登录实例

    5. **编写DAO(Data Access Object)层**:创建专门处理数据库操作的DAO类,这些类通常使用Hibernate的Session接口进行CRUD操作。 6. **Action与DAO交互**:在Action类中,通过调用DAO方法来实现业务逻辑,比如验证...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    标题“spring与hibernate以及ibatis集成的实例和具体配置图解”表明,这个资料包主要讲解如何将这三个框架结合在一起使用,以构建一个高效、灵活的后端系统。集成这些框架可以实现数据访问层的无缝切换,同时利用...

    spring+hibernate 框架实例

    2. **Session API**:Hibernate 的 Session 接口是数据库会话的抽象,它负责对象的持久化操作,包括保存、更新、删除和查询。 3. **HQL(Hibernate Query Language)**:这是 Hibernate 提供的一种面向对象的查询...

    hibernate框架实例

    本实例将深入探讨Hibernate的核心概念和常用功能,帮助你更好地理解和应用Hibernate。 一、Hibernate简介 Hibernate 是一个开源的ORM框架,它通过提供对象-关系映射工具,消除了Java应用程序与关系数据库之间的转换...

Global site tag (gtag.js) - Google Analytics