hibernate是一个基于ORM的持久化框架。它是对jdbc的轻量级封装,
从图可以知道hibernate的六大核心接口,两个主要配置文件,以及他们的直接关系。
1、Configuration接口 : 负责配置并启动hibernate
2、SessionFactory接口 : 负责初始化hibernate
3、Session接口 : 负责持久化对象的CRUD操作
4、Transaction接口 : 负责事务
5、Query接口和Criteria接口 : 负责执行各种数据库查询
Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃。
Hibernate工作原理:
1、解析hibernate.cfg.xml配置文件
通过Configuration config = new Configuration().configure();
读取并解析hiberante.cfg.xml配置文件
2、读取并解析映射信息
hibernate.cfg.xml中的<mapping resource="com/User.hbm.xml"/>映射文件
3、创建SessionFactory对象
SessionFactory sf = config.buildSessionFactory();
4、打开Session
Session session = sf.openSession();
5、创建并启动事务
Transaction tx = session.beginTransaction();
6、CRUD持久化操作
7、提交事务
tx.commit();
8、关闭session
9、关闭SessionFactory
hibernate优势:
1、对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2、Hibernate是一个基于JDBC的主流持久层框架,基于ORM实现。很大程度的简化DAO层编码工作。
3、hibernate使用java反射机制。
4、hibernate是轻量级框架,性能优秀,支持各种关系数据库,易于测试。
hibernate缓存机制
hibernate缓存的作用:
hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
hibernate缓存分类:
分为一级缓存和二级缓存
一级缓存又称为“session的缓存”,它是内置的,即使用hibernate便使用了session缓存。由于session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是
事务范围的缓存。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,sessionFactory不会启用这个插件。
第三方二级缓存实现:
Hibernate除了自带的缓存机制外,还提供了第三方缓存机制实现的接口,如:
1. JCS
2. EHCache
3. OSCache
4. JBoss Cache
5. SwarmCache
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 常量数据
不适合存放到第二级缓存的数据?
1经常被修改的数据
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存
删除、更新、增加数据的时候,同时更新缓存
- 大小: 26.8 KB
分享到:
相关推荐
【hibernate+mysql基本原理示例】 在Java Web开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式来处理数据库交互。MySQL则是一款广泛使用的开源关系型...
对于初学者,本书提供了理解Hibernate基本原理的清晰路径,而对有经验的开发者,它则提供了深化理解、提升技能的机会。无论你是想入门ORM,还是希望优化现有的Hibernate应用,这本书都能提供宝贵的指导。 总之,...
1. Hibernate基本原理:Hibernate是一个开源的Java对象关系映射(ORM)框架,它简化了数据库操作,通过将Java对象与数据库表之间的映射关系进行管理,避免了大量SQL代码的编写。Hibernate提供了数据持久化的接口和...
2. **Hibernate基本原理**:Hibernate通过提供对象/关系映射,将Java对象与数据库表关联起来,从而避免了直接使用SQL语句带来的复杂性和冗余。它还支持延迟加载、缓存策略和事务管理等功能,进一步提高了应用的性能...
#### Hibernate基本原理与优势 Hibernate是一个开放源代码的ORM框架,用于Java环境下的数据库操作。它最大的优势在于简化了JDBC的复杂性和冗余性,提供了更高级别的数据访问抽象。通过将数据库的连接信息集中管理于...
本书的内容主要包括:开源开发工具eclipse、用eclipse开发java web应用程序、struts应用技巧、struts的核心组件、struts的高级功能、 hibernate基本原理、hibernate的核心组件、hibernate的高级功能、 struts与...
**Hibernate4基本实现原理** Hibernate 是一款流行的 Java ORM(对象关系映射)框架,它允许开发者将数据库操作与 Java 对象交互,简化了数据库应用程序的开发。本文将深入解析 Hibernate4 的基本实现流程,帮助...
下面是Hibernate的基本运行原理和使用步骤概述: 1. **配置与初始化**: - 首先通过调用`Configuration().configure()`方法加载`hibernate.cfg.xml`配置文件,该文件包含了数据库连接信息和其他配置参数。 - 在...
`HibernateDemo(hibernate基本用法演示)` 是一个针对 Hibernate 框架的基础操作示例项目。Hibernate 是一款强大的 Java ORM(对象关系映射)框架,它允许开发者在 Java 应用程序中以面向对象的方式处理数据库交互,...
### Hibernate的原理与配置 #### 一、概述 Hibernate 是一款流行的开源 ORM(Object Relational Mapping,对象关系映射)框架,它简化了 Java 应用程序与数据库之间的交互过程。通过提供一套强大的 API,Hibernate...
Hibernate提供了两种基本的分页查询方法: 1. **基于SQL LIMIT关键字的分页**:这种方式适用于支持LIMIT关键字的数据库,如MySQL。 2. **基于ROWNUM的分页**:这种方式主要针对Oracle等不支持LIMIT关键字的数据库。 ...
### Hibernate 体系结构与工作原理 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object Relational Mapping,简称 ORM)框架,它为 Java 应用程序提供了一种将对象模型与数据库模型进行映射的方式,使得...
标题:Hibernate反射原理 描述:本文章旨在深入探讨Java与Hibernate框架结合时所涉及的反射原理,通过解析Java反射机制的基础知识,理解Hibernate如何利用反射技术实现对象关系映射(ORM)。 ### Java反射原理概览...
Hibernate基本操作 - **实体类的注解配置**:使用@Entity注解标记持久化类,@Id注解标记主键字段,@GeneratedValue自动生成主键。 - **Session工厂**:通过SessionFactoryBuilder构建SessionFactory对象,它是...
在"Hibernate 原理与应用 ppt"中,主要讲解了Hibernate的基本概念、安装配置、CURD操作、关联映射、继承映射、懒加载、HQL和Criteria查询、缓存管理、事务处理以及最佳实践和与JPA的集成。 **安装配置** 在开始使用...
以上就是 Hibernate 的基本原理和配置快速入门的介绍。在实际开发中,还需要根据项目需求,学习和掌握更多高级特性和最佳实践,例如级联操作、懒加载、代理对象、多对多关系映射等。通过深入理解和实践,Hibernate ...
在本文中,我们将深入探讨Hibernate的核心原理和配置,帮助初学者快速上手。 首先,了解ORM的概念非常重要。ORM是一种技术,它可以将Java对象(类和对象)映射到关系数据库中的表,从而在Java应用中处理数据就像...
### Hibernate基本知识点详解 #### Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用程序提供了简化的方式去处理数据库操作。通过提供一种面向对象的方法来与关系型数据库进行交互,...