• 慕课网首页
  • 免费课
  • 实战课
  • 体系课
  • 慕课教程
  • 专栏
  • 手记
  • 猿问
收藏网站
使用 Ctrl+D 可将网站添加到书签

我的购物车

已加入门课程

购物车里空空如也

快去这里选购你中意的课程

实战课

体系课

我的订单中心
去购物车
  • 登录 / 注册
抱歉,未找到你想要查询的结果
全部开发者教程

Hibernate 入门教程

Hibernate 入门
Hibernate 简介 Hibernate 初体验之持久化对象 Hibernate 初体验之操作流程 Hibernate 主配置文件 Hibernate 使用注解做元数据 Hibernate 中主键映射的助攻
Hibernate 核心 API
Hibernate 的会话工厂 Hibernate 的会话对象 Hibernate 常用操作方法 Hibernate Lazy&Fetch Hibernate 持久化对象的状态
Hibernate实体映射
Hibernate 模板设计模式 Hibernate 一对一关联映射 Hibernate 一对多双向关联映射 Hibernate 多对多关联映射 Hibernate 双向多对多关联映射 Hibernate 继承映射
Hibernate 的查询语言
Hibernate 查询语言(HQL) Hibernate中的Criteria 查询
Hibernate 性能及优化
Hibernate 性能之数据库连接池 Hibernate 性能之缓存 Hibernate 性能之缓存与缓存算法 Hibernate 性能之事务与并发 Hibernate 性能之隔离机制
Hibernate 高级问题
Hibernate 自动生成 SQL 语句 Hibernate 自动进行数据封装
Hibernate 经验之谈
Hibernate 中的常见坑 Hibernate 经典面试题 自定义类 Hibernate 框架的基本过程
  • 前端开发

    JavaScript

    JavaScript 入门教程

    本教程带你从初级到高级全面掌握 Javascript 的使用方法

    TypeScript 入门教程

    这是一个很好的简单课程,只需2小时你就可以学习TypeScript基础知识。

    Vue 入门教程

    本教程带您从零开始学习 Vue 框架的使用,让您轻松应对 Vue 项目的开发。

    Ajax 入门教程

    本教程涵盖Ajax的实现原理,及Ajax封装,最后是框架实现方法。

    ES6-10 入门教程

    对比 ES5 进行学习 ES6+,理解 ES6+ 语法背后的思想

    Yarn 入门教程

    Yarn得相关基础知识和高级进阶

    ECharts 入门教程

    从零开始学习 ECharts ,掌握 ECharts 核心内容

    HTML & CSS

    CSS3 入门教程

    本课程从盒模型、文字、颜色、过渡、动画、布局、伪类等方面介绍 CSS3 的使用。

    雪碧图入门教程

    本文详细介绍了雪碧图的由来历史以及各种使用方式

    移动端布局教程

    由于移动互联网的兴起,移动端项目占据了很大一部分比重,本章将详细讲解几种常见布局

    Html5 入门教程

    最新一代的HTML标准,增加了许多实用的特性

    Sass 入门教程

    前端项目中 Sass 的快速入门教程

    HTML 入门教程

    从零讲解 HTML,掌握基础 HTML 知识内容

    canvas 入门教程

    本教程带你从初级到高级全面掌握canvas的使用方法

    uni-app 入门教程

    从零开始学习 uni-app 框架,轻松上手应用开发

  • 服务端相关

    服务器

    Nginx 入门教程

    本教程使您掌握 Nginx 安装、配置、核心模块的详解、实际使用的能力。

    HTTP 入门教程

    从协议原理开始到 Web 服务器以及 Web 安全一网打尽

    Docker 入门教程

    从 Docker 的基础概念开始,从实际问题入手带你学习 Docker

    Shell 入门教程

    本教程由浅入深,系统性的讲解Linux Shell脚本编程。

    Linux 入门教程

    本教程从安装 Linux 开始,囊括 Linux 基础命令操作以及进阶系统管理

    开发工具

    Gradle 入门教程

    本教程使您掌握实际使用gradle进行项目构建、测试、打包、发布的能力。

    Vim 编辑器教程

    课程主要讲解Vim的安装配置,四种模式、基本操作,以及包管理工具和寄存器等内容。

    RESTful 规范教程

    本教程从什么是 REST 开始带你领略 Web 开发中无处不在的规范

    Dreamweaver 教程

    DW 是一款同时具有网页制作和网页管理功能的网站开发工具,可以快速进行网站建设

    Markdown 入门教程

    本课程涵盖 Markdown 的基本及扩展语法。

    Maven 入门教程

    从最基础的安装 Maven 开始到 Maven 在开发中的实际应用

    Eclipse 编辑器教程

    本教程从Eclipse安装开始带你轻松掌握Eclipse常用开发技巧

    GitHub 入门教程

    本教程带你轻松掌握最实用的 GitHub 知识

    Android Studio 编辑器教程

    Android Studio 编程技巧一网打尽

    PyCharm 编辑器教程

    工作经常用到的 PyCharm 编辑器使用技巧一网打尽

    Sublime Text 使用教程

    花里胡哨展示sublime编辑器的各种功能

    Postman 教程

    Postman 由Google 开发用来做接口请求测试,前后端开发人员都可以使用

    Git入门教程

    从入门到精通。

    热门服务端语言

    C 语言入门教程

    本教程从语法基础、进阶知识等各方面详解 C 语言。

    Go 入门教程

    本教程从 Go 语言的基本语法掌握到进阶编程实践

    Kotlin 教程

    从 Kotlin 的基础语法到高级特性一网打尽

    Ruby 入门教程

    本教程从 Ruby 的各种对象开始学习到 Ruby 的实际使用

    ThinkPHP 入门教程

    本教程主要讲解 ThinkPHP 框架如何上手开发应用

  • Java

    基础应用

    Java 入门教程

    深入浅出讲解 Java 语言基础知识,带你入门 Java 语言

    Android 入门教程

    为你解析最实用的 Android 技术,让你平滑上手,顺利进阶,为开发保驾护航

    算法入门教程

    分析讲解常见算法的思想及使用

    数据结构入门教程

    通俗易懂的带你了解 Java 数据结构

    Lambda 表达式教程

    本教程展现了Lambda表达式的基础语法以及在程序中的应用

    Java 并发原理入门教程

    本教程为Java并发原理入门教程,在Java程序开发中占据着举足轻重的地位

    设计模式入门教程

    带你分析最常见的九个设计模式

    Java并发工具

    本课程简洁明了展示最基本的并发工具类相关概念及应用方法。

    JVM 入门教程

    JVM 入门教程,对JVM结构进行分模块讲解,简单易懂。

    RabbitMQ 入门教程

    超系统的RabbitMQ基础知识课程,你还在等什么?

    网络编程入门教程

    Java 网络编程核心要点详解

    后端通用面试教程

    带你系统梳理后端高频面试题,轻松丰富你的校招&社招阶段

    框架应用

    Spring Boot 入门教程

    循序渐进讲解 Spring Boot 企业级应用开发

    Spring 入门教程

    通俗易懂 渐进式讲解 Spring 企业级开发应用

    Hibernate 入门教程

    由浅入深讲解 Hibernate 企业级 JDBC 应用框架

    MyBatis 入门教程

    本教程整理出“百分之二十”的知识,帮你办到“百分之八十”事情

    Spring MVC 入门教程

    通俗易懂讲解 Spring MVC 框架应用

    Swagger 入门教程

    本课程以图文并茂的方式带你学习 Swagger 核心知识和应用剖析

    Zookeeper 入门教程

    由浅入深的 学习 ZooKeeper 的基本使用以及高级使用

    Netty 教程

    由浅入深的讲解 Netty 的核心知识体系,快速上手使用和理解 Netty

    Spring Security

    本课程涵盖了 Spring Security 框架的基本原理和集成方法

    微服务

    Spring Cloud Hystrix

    系统介绍 Hystrix 支持特性与实际应用场景实战

  • Python

    基础应用

    Python 入门语法教程

    本教程带你从 Python 的基础语法开始学习 Python。

    Python 原生爬虫教程

    本教程从爬虫基础知识到进阶技巧到实际应用。

    Python 进阶应用教程

    本教程涵盖 Python 的面向对象、标准库解析、异常处理直至最后的领域应用

    Python 算法入门教程

    用 Python 代码实现常用算法并汲取算法核心思想。

    进阶方向应用

    Django 入门教程

    从 Web 基础到 Django 框架的实际开发应用

    Flask 框架教程

    Flask 框架快速入门实现一个 TodoList 功能

    NumPy 入门教程

    本教程从基础的数据类型开始到 NumPy 的高级应用一网打尽

    Scrapy 入门教程

    从爬虫基础开始到使用 Scrapy 框架抓取各大网站数据

    TensorFlow 入门教程

    通过本教程对 TensorFlow 框架快速入门

    Python 办公自动化教程

    本教程带你使用Python快速操作Excel、Word、PPT,处理各种文件

    Pandas 入门教程

    本教程从基础的数据类型开始到 Pandas 的高级应用一-网打尽

  • 数据库

    MySQL

    MySQL 入门教程

    本教程主要讲解 MySQL 增删改查等基础操作

    SQL 入门教程

    本教程讲解使用 SQL 访问和处理数据系统中的数据的方法。

    MySQL 进阶教程

    那些你还不理解的 MySQL 高阶特性一网打尽

首页 慕课教程 Hibernate 入门教程 Hibernate 入门教程 Hibernate 简介
姚文老师 · 更新于 2020-04-14

Hibernate 初体验之持久化对象

下一节

Hibernate 简介

图片描述

图片来自 Hibernate 官网

1. 前言

大家好!本节课将和大家一起学习鼎鼎有名的 Hibernate 框架。

本节课程将向大家介绍:

  • Hibernate 的功能 、特点;
  • Hibernate 产生的背景;
  • 并初步探讨编写 Jdbc 框架的基础构建思路。

2. Hibernate 是什么

简而言之:

  • Hibernate 是一个 Java Jdbc 框架,用来简化 Java Jdbc 操作;
  • Hibernate 也是一个ORM 框架,可以自动完成关系数据库中关系型数据到 Java 对象型数据的映射;
  • 当然,还可以说是一个持久化框架。

以上说法其实是对完成同一件事情不同角度的诠释。

Hibernate 的出现就是想让开发者的编码工作变得简单,这个简单指不需要在非核心逻辑编写上花费太多时间。

3. Hibernate 的发展历史

喝水不忘挖井人,先了解下 Hibernate 的发展历程。

故事的大致情节就是澳大利亚墨尔本一位名为 Gavin King 的 27 岁的程序员嫌弃原有的 Jdbc 编码工作方式太过无聊、无脑。于是就买了一本 SQL 编程的书籍在不长的时间内写了这么一个叫 Hibernate 的框架。

Hibernate 一出江湖,便一鸣惊人如此而已;
Hibernate 承载了一个程序员的励志故事。
Hibernate 由最初的 1.0 版本演变到了现在 6.x 版本(官网最新显示),功能越来越强大,体积当然也越来越强大。
至于你爱不爱它,还是要看项目的需要。
故事讲完,继续!

4. Hibernate 的特点

和 Hibernate 类似的框架很多,比如 Mybatis 之类。但是 Hibernate 在江湖上的地位一直都比较稳定,追捧之人众多。当然,各喜所爱!在每一个程序员的心里都会有自己的白马王子。

Hibernate 特点如下:

  • 完全面向对象操作: 操作过程可以忘记 Jdbc API 带来的伤痛;
  • 操作简单: 复杂的查询也只需几行代码,可以全身心去做核心业务逻辑;
  • 没有反射就没有框架: 操作简单的代价是底层封装代码的负重前行,Hibernate 适合业务逻辑复杂的场景,不适合数据量很大的应用;
  • Hibetnate 提供了专业级生产环境中的事务、缓存、并发等多种容错、高性能、高稳定性的解决方案。产品上线后,可减少开发者的后顾之忧,不用担心什么时候会有只 Bug 突然爬出来;
  • 简单易学,操作方便,学习成本较低。还有……还有……就是 Hiberate 提供一种框架设计思想,其开发理念对开发者可产生思想层面影响。

5. Hibernate 与其它框架的比较

  • 更适合现代开发理念: 产品的生命周期决定产品的市场价值,快速迭代开发是主流。Hibernate 能让开发者高度关注项目的核心业务逻辑,而不因重复繁杂的数据库连接操作影响产品的迭代周期;

  • 说到 Hibetnate,就会谈到与之齐名的 MyBatis,MyBatis 以半开发模式吸引开发者,让开发者在开发过程具有一定的把控感。但是,在数据库操作大的情况下书写SQL语句并不是一件轻松之事;对业务量多、数据库操作相对较少的情况,书写些常规性SQL想必也带来不了成就感。不如 Hibernate 来的简单直接;

  • Hibernate 提供多元化的操作模式。纯粹主义者能以完全面向对象方式操作;Hibernate 也提供了原生SQL操作模式,适合对原生 SQL 语句钟情者;对于复杂的数据操作,也支持存储过程调用。应有尽有,总能找到自己喜欢的感觉。

专业的角度,无论哪一种 Jdbc 框架,其要解决的问题都是一样的,其核心原则和思想是一样的。Hibetnate 是一个封装的严丝合缝的开源框架,其内在的代码架构和代码实现模式对于学习者无疑是一座宝藏。这点其它框架就无法与其一比。

6. Jdbc 框架形成过程

6.1 什么是持久化

要真正了解、认识 Hibernate, 先切换一下镜头,回到没有Hibernate 之前的世界,一起来了解框架的演变过程(有需求才会有市场嘛)。

现在是提问时间:

程序的本质是什么?

-----------------------我是等待你答案的中划线-----------------------

程序的本质是解决现实中的问题,解决问题之前,先解决第一个问题,用计算机建模并保存现实生活中的信息,这个过程叫信息数据化。

然后,按需求对数据进行逻辑处理并产生结果数据。程序是从数据到数据的过程,当然,算法功底很重要。

程序运行时的数据是保存在内存中的,叫临时数据或叫瞬时数据。

程序运行过程产生的数据有些是需要永久性保存的,选择介质较多,一般会选择保存在数据库中,Java 程序员可以使用 Jdbc Api 和数据库进行交互。

把程序中的数据写回数据库这个过程也可称为数据持久化过程。

6.2 Java Jdbc 框架演变之路

先回顾一下纯手工 Jdbc 操作流程:

  1. 加载由不同厂商遵循 Jdbc 规范开发的驱动类。关于 Jdbc 驱动类开发不是这里要讲的,可查阅相关资料;
Class.forName("对应数据库的驱动类名");
  1. 建立 Java 程序和数据库系统的连接。本质是进程和进程的网络连接;
Connection conn = DriverManager.getConnection("url","用户名","密码");
  1. 确定数据清单。数据库只认 SQL 语句,你需要数据库帮你做什么样的数据操作,需要传送 SQL 指令给数据库;
String sql="使用sql语法描述数据需求";
  1. 需要一个信使。创建一个语句处理对象充当信使,任务就是上传下达;
PreparedStatement preparedStatement=conn.prepareStatement(sql); 
  1. 信使工作,把程序中的数据搬运到数据库,或把数据库数据搬运到程序;
preparedStatement.各种方法();
  1. 数据搬运过来后,Java 代码要用呀!Java 语言有什么特点?面向对象吗?搬运过来的数据是符合关系数据库特点的数据,于是开始手工数据格式转换、封装;

省略若干代码,心里希望表结构中字段不要太多!此时的苦只有自己知道!!
7. 最后把封装成 OOP 的数据交付给 Java 业务代码使用,各种资源关闭。

在编码时,只要涉及到和数据交互行为。好吧,把前面的几个步骤再走一遍。发现没有,其实你在做大量的重复工作,好好的脑力活生生变成了体力活。

怎么办?难道要承受这种编程生活的折磨吗,当然不!

通过模板方法解决 Jdbc 访问中的重复性问题。

其实,Jdbc 编程是一个模板化的操作过程,针对不同的数据请求操作其中只有 2 个地方是不一样的。

  • 数据清单不一样。每一次、不同数据需求的 Jdbc 操作请求,SQL 语句是不一样的。
  • 另一个不一样是从关系数据库中读出来的数据封装成对应的目标对象类型是不一样的。

知道这些就好办,可以把 Jdbc 代码操作封装成一个模板方法。在模板方法中预留 2 个参数:

  • 传入 SQL 语句;
  • 传入一个用于封装结果集中的数据到 OOP 对象的方法。

按照这个思路,属于你的 Jdbc 简易框架就要诞生了。有点激动吧!

如下是查询模板方法代码参考:

/**
 *通用 jdbc 查询数据模板方法
 *connection:连接对象,可由外部传入,也可由内部方法创建
 *sql:传过来的 SQL语句
 *rsh:自定义结果集处理接口,其中有封装结果集数据的方法
 *args:SQL中参数值
 */
public <T> T query(Connection connection, String sql, ResultSetHandler<T> rsh, Object... args) throws SQLException {
   // 建立连接
   if (connection == null)
    	connection = this.dataSource.getConnection();
    if (sql == null)
    	throw new SQLException("SQL语句不正确");
    // 预处理语句
    PreparedStatement preStatement = connection.prepareStatement(sql);
    // SQL指定参数值
    fillStatement(preStatement, args);
    // 结果集
    ResultSet rs = preStatement.executeQuery();
    // 结果处理规范
    T result = rsh.handle(rs);
    // 资源关闭
    this.close(connection, preStatement, rs);
    return result;
}

调用上面方法时,传递一条 SQL 语句,传递一个实现了 ResultSetHandler 接口的对象(此对象提供方法完成数据映射工作)就可以了。

我们编写的模板方法与 Hibernate 相比较:

  • Hibernate 会自动构建生成 SQL 语句。复杂的 SQL 也不是问题;
  • 自动完成了关系型数据库中的数据到 Java 对象的封装。

所以说Hibernate 是一个全自动化的 ORM 持久化框架。

当然 Hibernate 可不仅只完成数据库数据的访问,还会考虑性能、事务等生产环境中的诸多现实问题,这些会在本课程后面慢慢展开。

7. 学习基础

学习 Hibernate 分 2 个层次:

  • 把 Hibernate 当成一个工具, 掌握其应用。只需要学习者具有一定的 JAVA 基础知识即可;
  • 了解 Hibernate 底层运行机制,对其运行过程进行调优,则需要学习者具有反射、网络编程、多线程等相关知识的储备。

8. 小结

好了!到了总结时间:

本章节帮助大家初步了解 Hibernate 框架的作用。和原生态Jdbc 操作相比较,可发现 Hibernate 解决了 Jdbc 操作中的 SQL 语句生成问题、关系数据库中数据自动映射问题。

Hibernate通过提供统一的接口方式让用户以面向对象的方式透明的、简单地使用Jdbc连接数据库。

让开发者从繁琐无太多技术含量的编码中解脱出来,用更多的心思和时间完成核心业务逻辑。

  • 划线
  • 写笔记
  • 复制

0/1000

 

下一节

Hibernate 初体验之持久化对象

我要提出意见反馈
· 最近更新于 请填写更新时间
使用手机查看
最近更新
向你推荐
更多
索引目录
Hibernate 简介
1. 前言
2. Hibernate 是什么
3. Hibernate 的发展历史
4. Hibernate 的特点
5. Hibernate 与其它框架的比较
6. Jdbc 框架形成过程
6.1 什么是持久化
6.2 Java Jdbc 框架演变之路
7. 学习基础
8. 小结
意见反馈 收藏教程 标记书签
使用 Ctrl+D 可将网站添加到书签
  • 网站地图
  • 网站首页
  • 企业合作
  • 关于我们
  • 联系我们
  • 讲师招募
  • 帮助中心
  • 意见反馈
  • 慕课大学
  • 代码托管

Copyright© 2022 imooc.com All Rights Reserved | 京ICP备 12003892号-11 京公网安备11010802030151号

意见反馈 常见问题 APP下载
官方微信
返回顶部