为什么是对象关系映射(ORM)

当我们工作在一个面向对象的系统中时,存在一个对象模型和关系数据库不匹配的问题。RDBMSs 用表格的形式存储数据,然而像 Java 或者 C# 这样的面向对象的语言它表示一个对象关联图。对象需要被存储和索引进表格中,第一个问题,如果我们开发了几页代码或应用程序后,需要修改数据库的设计怎么办?第二个问题,在关系型数据库中加载和存储对象时我们要面临以下五个不匹配的问题。

不匹配 描述
粒度 有时你将会有一个对象模型,该模型类的数量比数据库中关联的表的数量更多
继承 RDBMSs 不会定义任何在面向对象编程语言中本来就有的继承
身份 RDBMS 明确定义一个 'sameness' 的概念:主键。然而,Java 同时定义了对象判等(a==b)和 对象值判等(a.equals(b))
关联 面向对象的编程语言使用对象引用来表示关联,而一个 RDBMS 使用外键来表示对象关联
导航 在 Java 中和在 RDBMS 中访问对象的方式完全不相同

Object-Relational Mapping (ORM) 是解决以上所有不匹配问题的方案

什么是ORM

ORM 表示 Object-Relational Mapping (ORM),是一个方便在关系数据库和类似于 Java, C# 等面向对象的编程语言中转换数据的技术。一个 ORM 系统相比于普通的 JDBC 有以下的优点。

  • 使用业务代码访问对象而不是数据库中的表
  • 从面向对象逻辑中隐藏 SQL 查询的细节
  • 基于 JDBC 的 'under the hood'
  • 没有必要去处理数据库实现
  • 实体是基于业务的概念而不是数据库的结构
  • 事务管理和键的自动生成
  • 应用程序的快速开发

一个 ORM 解决方案由以下四个实体组成:

  • 一个 API 来在持久类的对象上实现基本的 CRUD 操作
  • 一个语言或 API 来指定引用类和属性的查询
  • 一个可配置的服务用来指定映射元数据
  • 一个技术和事务对象交互来执行 dirty checking, lazy association fetching 和其它优化的功能

Hibernate 概述

Hibernate 是一个高性能的对象/关系型持久化存储和查询的服务,其遵循开源的 GNU Lesser General Public License (LGPL) 而且可以免费下载。Hibernate 不仅关注于从 Java 类到数据库表的映射(也有 Java 数据类型到 SQL 数据类型的映射),另外也提供了数据查询和检索服务。

Hibernate 是由 Gavin King 于 2001 年创建的开放源代码的对象关系框架。它强大且高效的构建具有关系对象持久性和查询服务的 Java 应用程序。

Hibernate 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。

Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象。

Hibernate优势

  • Hibernate 使用 XML 文件来处理映射 Java 类别到数据库表格中,并且不用编写任何代码。
  • 为在数据库中直接储存和检索 Java 对象提供简单的 APIs。
  • 如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。
  • 抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。
  • Hibernate 不需要应用程序服务器来操作。
  • 操控你数据库中对象复杂的关联。
  • 最小化与访问数据库的智能提取策略。
  • 提供简单的数据询问。

支持的数据库

  • HSQL Database Engine
  • DB2/NT
  • MySQL
  • PostgreSQL
  • FrontBase
  • Oracle
  • Microsoft SQL Server Database
  • Sybase SQL Server
  • Informix Dynamic Server

支持的技术

Hibernate 支持多种多样的其它技术,包括以下:

  • XDoclet Spring
  • J2EE
  • Eclipse plug-ins
  • Maven

转载于:https://www.cnblogs.com/xiaobaizhiqian/p/7910673.html

Hibernate---简介相关推荐

  1. Hibernate(1)Hibernate简介和简单示例,了解Hibernate事务回滚用法

    1 Hibernate简介 Hibernate是一个orm(object relation mapping 对象关系映射)框架,处于项目的持久层,也叫持久层框架(持久层框架还有ojb等). Hiber ...

  2. Hibernate简介2

    一.主配置 ◆查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据.但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反 ...

  3. java ssh框架 struts spring hibernate 简介

    目录 什么是SSH框架 浅谈Struts 什么是Struts Struts的核心构成 为什么使用Struts 浅谈Hibernate 什么是Hibernate Hibernate的核心构成 浅谈Spr ...

  4. Hibernate 简介(百度)

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDB ...

  5. Hibernate 简介

    2019独角兽企业重金招聘Python工程师标准>>> 我们从三个角度理解一下Hibernate: 一.Hibernate是对JDBC进一步封装 原来没有使用Hiberante做持久 ...

  6. Hibernate简介

    1 hibernate概述 Hibernate是冬眠的意思,它是指动物的冬眠,但是本文讨论的Hibernate却与冬眠毫无关系,而是接下来要讨论的SSH2框架中的一员.Hibernate是一个开源的项 ...

  7. 1.[精通Hibernate笔记]Hibernate简介

    Hibernate是Java应用关系数据库之间的桥梁,负责Java对象和关系数据之间的映射.Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API. Hibe ...

  8. hibernate简介介绍

    1.Hibernate介绍 1.2Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了较为轻量级的对象封装,它将entity数据库表建立映射关系,是个全自动的orm框架,Hiber ...

  9. Hibernate是啥?

    1:Hibernate和JDBC.ODBC的作用是一样的.用来访问.操作数据库的.它的优势在哪?没用过.我也不知道...不过貌似[数据持久化]是个关键词. [ 下边是百科里的一段话: 对象上数据的修改 ...

  10. mybatis与mysql的优点_mybatis和hibernate比较_区别_优缺点

    前言 Hibernate与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8.而Mybatis相对平静,工具较少,当前最 ...

最新文章

  1. 连载《一个程序猿的生命周期》-《发展篇》 - 5.奶奶终于“自杀”了
  2. SerialPort实现对串口COM的操作(有些纠结)
  3. Selenium v2.45.0 发布,此版本现已提供下载:http://selenium-rele
  4. python3.6环境变量设置win10_python——python3.6环境搭建(Windows10,64位)
  5. spring配置过滤器,报错 com.skynet.filter.GrantFilter cannot be cast to javax.servlet.Filter
  6. 120. Triangle 三角形最小路径和
  7. 冒泡排序 java_冒泡排序Java版本
  8. 大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业
  9. delphi xe http 收不到反馈消息_好消息!浦东这个小区3幢多层住宅都要加装电梯啦→...
  10. java 预览office_java在线预览office
  11. 【Linux】grep命令
  12. 禅道---Bug管理模块
  13. 求助微软商店下载的Ubuntu打开后显示目标路径参数错误,进入路径强制打开显示0x80070005错误。各种方法都试验了
  14. python矩形法求定积分_如何用矩形法(梯形法)求定积分
  15. 碳足迹审核的计算有几种方法?
  16. 使用zxing生成彩色或带图片的二维码
  17. Tableau图表 | 3、区域图/面积图/折线图
  18. 步进电机驱动控制总结(一)
  19. RedHat终端中文乱码解决,netterm经常变换颜色的解决
  20. IP组播配置与管理——5

热门文章

  1. EP Limited: 开源ECG分析软件介绍
  2. 蓝牙学习笔记(十)——BLE透传传输延迟分析
  3. C语言:求矩阵对角线元素的和
  4. LeetCode 655. Print Binary Tree (C++)
  5. 30岁的我们,生活数据有了哪些改变
  6. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
  7. chkconfig用法
  8. 关于c++库文件的一点使用体会
  9. sourceinsight4.0安装破解( 内含sublime text配色方案)
  10. leetCode:reverseInteger 反向整数 【JAVA实现】