【Java基础之】Hibernate之360度环视

在介绍Hibernate之前,先介绍一下JDBC,Java Data Base Connectivity——Java数据库连接,是一种用于执行SQL语句的Java API,是一套访问数据库的标准,提供了一组接口,可以为多种关系数据库提供统一访问,是Java语言访问数据库用到的东西。

短短几句说完JDBC回来继续说Hibernate,Hibernate是当今很流行的一个ORM框架,是JPA的一个实现,完了,说说又得说说ORM和JPA。先说ORM,Object Relation Mapping对象关系映射,是对象持久化的核心,ORM是对JDBC的封装,从而解决了JDBC的各种存在问题。

ORM具体是怎么实现的呢?

继续说一下JPA,即Java Persistence API,是Java持久化API,是sun公司在Java EE5.0规范中提出的Java持久化接口,记住这两个字“接口”,对滴,JPA规范本质上就是一种ORM规范,但不是ORM框架,因为JPA并未提供ORM的实现,它只是制定了一些规范,提供了一些编程的API接口,但具体的实现则由服务器厂商来提供实现。JPA作为一种规范,只是提供一些接口。Jboss服务器底层就以Hibernate作为JPA的实现。所以,Hibernate除了作为ORM框架之外,它也是一种JPA实现。

所以我们可以这么理解,JPA是接口,Hibernate是实现,ORM是一种技术。搞清楚Hibernate和ORM、JPA的关系,我们继续回来看Hibernate.Hibernate主要用来实现Java对象和表之间的映射,完成自动创建表的过程。除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标是解放开发者~通常的~数据持久化相关的编程任务~的95%(这句话比较绕啊,就是有关于数据持久化编程的任务,Hibernate要解放其95%的工作量。这里又涉及到了"数据持久化"这个抽象的名词,我们来解释一下哈。所谓数据持久化,就是将内存中的数据模型转换为存储模型、以及将存储模型转换为内存中的数据模型的统称。也太绕了,通俗点儿,就是把内存中的数据写入或从磁盘上恢复,这样的一个过程的统称叫做数据持久化。)所以,这么一解释,是不是就明白了Hibernate是干什么的了??

下面我们看几个Hibernate的结构图。这是一个最简单的Hibernate结构图。

然后进一步分解

还没有分彻底,再进一步分解

现在你再来看这张图,来说说整个Hibernate的大致组成部分。

SessionFactory(org.hibernate.SessionFactory):针对单个数据库映射关系经过编译后的内存镜像,是线程安全的,不可变的,它是生成Session的工厂,本身要用到ConnectionProvider

Session(org.hibernate.Session):表示应用程序与持久存储层之间交互操作的一个单线程对象,此对象生存期很短,隐藏了JDBC连接,也是Transaction的工厂。

Transaction(org.hibernate.Transaction):应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。


ConnectionProvider
(org.hibernate.connection.ConnectionProvider):生成JDBC连接的工厂,有连接池的作用,它通过抽象将应用从底层的Datasource或DriverManager隔离开。仅供开发者扩展、实现用,并不暴露给应用程序使用。


TransactionFactory
(org.hibernate.TransactionFactory):生成Transaction对象实例的工厂,仅供开发者扩展、实现用,并不暴露给应用程序使用。

下面说一下配置Hibernate的两个配置文件xxx.cfg.xml和xxx.hbm.xml它们包含的内容。

xxx.cfg.xml主要包含以下配置:1、与DB的连接;2、可选配置;3、资源文件注册;4、二级缓存

xxx.hbm.xml主要包含以下配置:1、类和表的映射;2、主键的映射;3、类的属性和DB中字段的映射;4、关系的映射。注意:这个xxx.hbm.xml它是和实体类对应的,是映射到数据库的映射文件。而在xxx.cfg.xml中配置的是与数据库等的连接。也就是xxx.hbm.xml这个映射文件是通过xxx.cfg.xml这个配置文件映射成功的。

限于篇幅的原因,这篇博客就先到这里,下篇博客会继续介绍一下Hibernate的缓存机制以及延迟加载问题。敬请期待。最近这段时间都会持续更新关于Java基础以及在项目中涉及到的各种技术,欢迎在下方留言!

时间: 2024-08-24 05:40:38

【Java基础之】Hibernate之360度环视的相关文章

Java基础103 Hibernate技术连接MySQL数据和Oracle数据库的配置方法

1.Hibernate技术连接MySQL数据 User.hbm.xml 配置文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernat

【Java基础】Hibernate的缓存机制以及延迟加载

上篇博客介绍了Hibernate的基本原理,在博客尾声的时候提到了Hibernate的缓存机制以及延迟加载问题,这篇博客我们继续,将这两部分的内容补充完. 首先说说Hibernate的缓存机制,我们都知道Hiernate有一级缓存.二级缓存,但是具体的机制原理了解的清楚吗?这里我们就来好好说说Hibernate的缓存机制.先说说为什么要用缓存机制?Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对数据源访问的频次,从而提高应用程度的运行性能.缓存内的数据是对物理数据源中的

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

Java基础学习笔记二十八 管家婆综合项目

本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添加账务 编辑账务 删除账务 项目环境搭建 技术选型和jar包介绍 每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术.在今后的学习过程中,我们会逐渐对这些专业组织有所了解.本项目中使用的技术如下: apache的commons组件: commons-dbutils

java基础篇---I/O技术(三)

接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象输入流(ObjectInputStream).使用对象输出流输出序列化对象的步骤,有时也成序列化,而使用对象输入流读入对象的过程,有时也称为反序列化 一个对象产生之后实际上是在内存中为其开辟了一个存储空间,方便存储信息. 对象序列化就是把一个对象变成二进制的数据流的一个方法,通过对象序列化可以反驳的

6、50道JAVA基础编程练习题跟答案

1 50道JAVA基础编程练习题 2 [程序1] 3 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 4 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 5 public class Prog1{ 6 public static void main(String[] args){ 7 int n = 10; 8 System.out.println("第"+n+

360度评价反馈有哪些使用场景?

作为支持组织管理及领导力发展的工具,360度评估反馈是组织人才管理战略的重要组成部分.它能够评估员工的优缺点,并作为培训或教练计划的出发点.因为360度评估反馈具有全面性,所以它能够有效区分出那些表现优秀的员工.刚刚符合期望的员工以及亟待发展的员工.当然,这些评估结果远不止帮助企业创造利润,影响员工的评定.培养以及留任:更能在员工的关键行为.能力和工作标准间建立一致性.从人才管理的业务出发,360度评估反馈在人才管理的多个方面发挥作用. 发展领导力360度评估反馈法在领导力发展的整个生命周期中有

【java基础】Java反射机制

一.预先需要掌握的知识(java虚拟机)  1)java虚拟机的方法区:  java虚拟机有一个运行时数据区,这个数据区又被分为方法区,堆区和栈区,我们这里需要了解的主要是方法区.方法区的主要作用是存储被装载的类 的类型信息,当java虚拟机装载某个类型的时候,需要类装载器定位相应的class文件,然后将其读入到java虚拟机中,紧接着虚拟机提取class 中的类型信息,将这些信息存储到方法区中.这些信息主要包括: 这个类型的全限定名 这个类型的直接超类的全限定名 这个类型是类类型还是接口类型

Java基础Day6

Java基础第六天 数组 数组概述 需求:现在需要统计某公司员工的工资情况,例如计算平均工资.找到最高工资等.假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦.为了解决这种问题,Java就提供了数组供我们使用. 那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话: 数组是存储多个变量(元素)的东西(容器) 这多个变量的数据类型要一致 数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成