ORM框架

概述


在学习MyBatis之前,先来看看什么是ORM框架。

ORM全称Object/Relation Mapping,对象/关系数据库映射,功能为完成对象的编程语言到关系数据库的映射,可以将其当成应用程序和关系型数据库的桥梁。

当使用面向对象的编程语言来进行应用开发时,从项目一开始就采用的是面向对象的思想(分析、设计、编程等),但到了持久层数据库访问时,又必须重返关系数据库的访问方式,所以就产生了ORM框架,可以把关系数据库包装成面向对象的模型。

ORM是面向对象程序设计语言和关系数据库发展不同步时的中间解决方案。采用ORM框架后,应用程序不再直接访问底层数据库,而是以面向对象的方式来操作持久化对象(创建、修改、删除等),而ORM框架则将这些面向对象的操作转换成底层的SQL操作。



ORM框架的唯一作用就是:把对持久化对象的保存、修改、删除等操作,装换成对数据库的操作,编程人员可以以面向对象的方式操作持久化对象,而ORM框架则负责将相关操作转换成对应的SQL(结构化查询语言)操作。

ORM框架的映射方式


ORM框架提供了持久化类和数据表之间的映射关系,所有的ORM框架基本都遵循相同的映射思路:

1、数据表映射类:
持久化类被映射到一个数据表。编程人员使用这个持久化类来创建实例、修改属性或删除实例时,系统自动会转换为对这个表进行CRUD操作。

2、数据表的行映射对象:
持久化类会生成很多实例,每个实例对应数据表中的一行记录。当程序在应用中修改持久化类的某个实例时,ORM工具将会将其转换为对于对应数据表中特定的行的操作。



3、数据表的列映射对象的属性:
当程序修改某个持久化对象的指定属性时,ORM会将其转换成对于对应数据表中指定数据行、指定列的操作。

基于这种基本的映射方式,ORM框架可以完成对象模型和关系模型之间的相互映射。

因此在ORM框架中,持久化对象是一种媒介,应用程序只需操作持久化对象,ORM框架则负责将这种操作转换为底层数据库操作。这种转换对开发者是透明的,开发者无须关心内部细节,从而将开发者从关系模型中解放出来,使得开发者能以面向对象的思维操作关系数据库。

流行的ORM框架


1、JPA:
JPA本身是一种ORM规范,并不是ORM产品。相对于其他开源ORM框架,优势在于其是官方标准,因此具有通用性,若应用程序是面向JPA编程,那么应用程序就可以在各种ORM框架之间切换。

2、Hibernate:
被选为JBoss的持久层解决方案,属于Red Hat组织。其灵巧的设计、优秀的性能和丰富的文档,使其成为最流行的开源ORM框架之一。

3、MyBatis:
严格意义上并不能称之为ORM框架,它是半自动化的ORM实现,但它并不支持纯粹的面向对象操作,而是允许编程人员直接编写SQL语句,更加灵活。

ORM和Mybatis的更多相关文章

  1. atitit.动态加载数据库配置in orm hibernate mybatis

    atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...

  2. ORM框架 Mybatis、Hibernate、Spring Data JPA之到底该用谁,谁更牛*

    在持久层框架中无可厚非的就是mybatis了,但是也会经常被人问到为啥要用mybatis,为啥不用hibernate,jpa.很多人各级都是地铁爷爷看手机的表情,似乎从来没想过这个问题.“公司叫用我就 ...

  3. 【ORM】Mybatis与JPA的区别

    Mybatis与JPA的区别: 1.ORM映射不同: Mybatis是半自动的ORM框架,提供数据库与结果集的映射: JPA(Hibernate)是全自动的ORM框架,提供对象与数据库的映射: 2.可 ...

  4. mybatis(一)常见ORM框架及JDBC操作工具类

      转载:https://www.cnblogs.com/wuzhenzhao/p/11075569.html 在Java 程序里面去连接数据库,最原始的办法是使用JDBC 的API.我们先来回顾一下 ...

  5. MyBatis 实践 -Mapper与DAO

    MyBatis 实践 标签: Java与存储 MyBatis简介 MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架. MyBatis是对JDBC的封装,使开 ...

  6. 初识MyBatis

    ORM:对象关系映射,它只是一种规则. 像MyBatis,Hibernate对jdbc进行了封装. 第一章 回顾JDBC开发 1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高.2.缺 ...

  7. MyBatis快速入门(1):搭建环境和单表映射

    一.MyBatis简介    一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate.Hibernate作为一个著名的框架,功能十分强大.我们只需要配置好实体类和数据表之间的关系,Hibe ...

  8. MyBatis Generator For Eclipse 插件安装

    由于在ORM框架MyBatis中,实现数据表于JavaBean映射时,配置的代码比较的复杂,所以为了加快开发的效率,MyBatis官方提供了一个Eclipse的插件, 我izuoyongjiushis ...

  9. 第一个Mybatis程序示例 Mybatis简介(一)

    在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于“internet”和“aba ...

随机推荐

  1. Docker入门-笔记-1

    Docker入门 Docker 是 Golang 编写的, 自 2013 年推出以来,受到越来越多的开发者的关注.如果你关注最新的技术发展,那么你一定听说过 Docker.不管是云服务还是微服务(Mi ...

  2. 一起学Vue之计算属性和侦听器

    概述 在Vue开发中,模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.当你想要在模板中多次引用相同表达式时,就会更加难以处理.所以,对于任何复 ...

  3. 动态代理模式_应用(Redis工具类)

    本次使用动态代理的初衷是学习Redis,使用Java操作Redis时用到Jedis的JedisPool,而后对Jedis的方法进一步封装完善成为一个工具类.因为直接使用Jedis对象时,为了保证性能, ...

  4. Linux下的密码破解

    密码散列: 密码散列的$6 表示是:SHA512 这里我们使用hashcat 工具进行破解 ╰─ hashcat -m 1800 hash.txt /usr/share/wordlists/rocky ...

  5. 集合系列 Map(十五):TreeMap

    TreeMap 是 Map 集合的有序实现,其底层是基于红黑树的实现,能够早 log(n) 时间内完成 get.put 和 remove 操作. public class TreeMap<K,V ...

  6. laravel .env文件的使用

    umen 是 laravel 的衍生品,核心功能的使用和 laravel 都是一致的,但配置文件这一方面,lumen 在 laravel 的基础上增加了更简便的配置方式:lumen 采用了 DotEn ...

  7. IT兄弟连 HTML5教程 CSS3属性特效 transition过渡

    CSS3的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值. transitio ...

  8. LeetCode 按序打印

    第1114题 我们提供了一个类: public class Foo {   public void one() { print("one"); }   public void tw ...

  9. swoole简介

    swoole是PHP的扩展,又不是一个普通的扩展.普通的扩展只是提供一个库函数.而swoole扩展在运行后会接管PHP的控制权,进入事件循环.当IO事件发生后,swoole会自动回调指定的PHP函数. ...

  10. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...