应用程序可以直接通过Hibernate API 访问数据库。Hibernate API中的接口可分为以下几类。
- 提供访问数据库的操作(如保存、更新、删除和查询对象)的接口。这些接口包括:Session、Transaction和Query接口
- 用于配置Hibernate的接口:Configuration。
- 回调接口,使应用程序接受Hibernate内部发生的事件,并做出相应的回应。这些接口包括:Interceptor、Lifecycle和Validatable接口。
- 用于扩展Hibernate的功能的接口,如UserType、CompositeUserType和IdentifierGenerator接口。如果需要的话,应用程序可以扩展这些接口。
Hibernate内部封装了JDBC、JTA(Java Transaction API)和JNDI(Java Naming and Directory Interface)。JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统。JNDI和JTA使Hibernate能够和J2EE应用服务器集成。这些接口大多数位于net.sf.hibernate包中。
Hibernate核心接口
所有的Hibernate应用中都会访问Hibernate的5个接口
- Configuration接口:配置Hibernate,根启动Hibernate,创建SessionFactory对象。
- SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象。
- Session接口:负责保存、更新、删除、加载和查询对象。
- Transaction:管理事务。
- Query和Criteria接口:执行数据库查询。
Configuration接口:
configuration对象用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来指定对象-关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。
SessionFactory接口:
一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获取Session实例。SessionFactory有以下特点:
- 它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。
- 它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例
之所以称SessionFactory是重量级的,是因为它需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被所有工作单元共享。一个工作单元通常对应一个数据库事务。
Session接口:
Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,他提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。
提示:
Hibernate的Session和Java Web中的HttpSession没有任何关系
|
Session有以下特点:
- 不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
- Session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建和销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
Session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象。每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前工作单元访问。
分享到:
相关推荐
【描述】:文档主要讨论了Java对象持久化,特别是如何在基于B/S的三层架构中使用Hibernate框架。它阐述了数据访问层在Java应用程序中的作用,以及Hibernate在实现持久化层中的角色。 【标签】:“Hibernate、O/R ...
- **JDO (Java Data Objects)**:Java标准的一种持久化技术,提供了一种类似数据库连接池的方式来管理对象的状态。 - **JPA (Java Persistence API)**:Java平台上的标准持久层框架。 #### 四、Hibernate基础配置...
### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...
- **JPA (Java Persistence API)**:Java EE 规范中定义的一套用于管理持久化数据的标准 API。 #### 四、Hibernate 基础配置详解 - **项目**: `Hibernate_0300_BasicConfiguration` - **MySQL 图形化客户端**:介绍...
### Hibernate 学习笔记知识点详解 #### 一、Hibernate 简介 - **概念**:Hibernate 是一种“对象/关系映射”(Object/Relational Mapping,简称 ORM)技术,用于解决 Java 应用程序与关系型数据库交互的问题。 - *...
2. **Session接口**:它是Hibernate的核心API之一,用于执行持久化操作,如保存、更新、删除对象等。 3. **Transaction接口**:用于管理事务,确保数据的一致性和完整性。 4. **Query接口**:用于执行查询操作,可以...
Hibernate作为Java领域内的一款强大、流行的持久化框架,它简化了数据库操作,使得开发者可以专注于业务逻辑,而无需关心底层数据库交互的细节。这份笔记资料旨在帮助读者深入理解Hibernate的核心概念,以及如何在...
**Hibernate 框架详解** Hibernate 是一个开源的 Java 平台上的对象关系映射(ORM)框架,它简化了数据库操作,使开发者能够通过面向对象的方式来管理和操作数据。本笔记将深入探讨 Hibernate 的核心概念、配置、...
### Hibernate—我的Hibernate学习笔记 #### 一、对象持久化的理论与实践 ...综上所述,Hibernate通过其强大且易用的API,简化了Java应用与关系数据库的交互过程,成为现代企业级应用中对象持久化的首选方案。
1. **数据持久化**: Hibernate 提供了自动的数据持久化机制,可以将 Java 对象保存到数据库,或者从数据库加载到内存。 2. **事务管理**: Hibernate 支持 JTA(Java Transaction API)和 JDBC 事务管理,确保数据的...
在Hibernate中,核心概念主要包括实体(Entities)、持久化类(Persistent Classes)、持久化字段(Persistent Fields)、对象状态(Object States)、会话(Session)和事务(Transactions)。以下是对这些关键概念...
- **ORM技术**:Hibernate实现了对象关系映射(Object-Relational Mapping,简称ORM)技术,其核心在于将Java对象自动持久化到关系数据库中。这一过程极大地简化了数据的存储和检索,允许开发者以面向对象的方式操作...
- **自动持久化管理**: Hibernate能够在内存中管理对象的状态,并自动处理对象值的读取和写入数据库的过程,大大降低了开发者的负担。 - **跨平台兼容性**: Hibernate支持多种数据库系统,并且可以在各种Java应用...
《Hibernate框架开发详解——以黑马程序员2016版讲义和笔记为引导》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更专注于业务逻辑而不是繁琐的数据访问...
2. 对象持久化:Hibernate的核心功能之一就是实现对象的持久化,这涵盖了从对象的创建、更新、删除到查询等一系列操作。保存操作将Java对象存储到数据库中,更新则修改数据库中的对象状态,删除则从数据库中移除对象...
2. **持久化模型**:通过 Hibernate,Java 对象可以被持久化到数据库中,反之也可以从数据库加载到内存中,实现了对象与数据库记录之间的映射。 ### 二、Hibernate 架构 Hibernate 包含了几个主要组件,如 ...
### Hibernate映射笔记详解 #### Hibernate映射文件与配置关系 ...总之,Hibernate映射是连接Java对象世界与数据库世界的重要桥梁,深入理解并灵活运用其各项特性和技巧,对于构建高效、稳定的持久化层具有重要意义。
- **PO (Persistent Object)**:即持久化对象,通常指与数据库表相对应的JavaBean。 - **HBM映射**:通过XML文件或注解定义Java对象和数据库表之间的映射关系。 - **Hibernate核心配置**:主要包括`hibernate.cfg....