1. 什么是ORM?

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单来说,将程序中的兑现自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的反感是采用硬编码的方式(jdbc操作sql方式),为每一种可能的数据库访问操作提供单独的方法:

这种方案存在以下的不足:

1.      持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口。

2.      持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改持久化层的相关程序代码,增加了软件的维护难度。

ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM框架有个:Hibernate,mybatits,speedframework

ORM的方法论基于三个核心原则:

简单:以最基本的形式建模数据

传达性:数据库结构被任何人都能理解的语言文档化

精准性:基于数据模型创建正确标准化了的结构

ORM框架:为了解决面型对象与关系数据库存在的互不匹配的现象的框架。

概括起来 : 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单来说,将程序中的兑现自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的反感是采用硬编码的方式(jdbc操作sql方式),为每一种可能的数据库访问操作提供单独的方法。这种方法存在很多缺陷,所有使用ORM框架(为了解决面型对象与关系数据库存在的互不匹配的现象的框架)来解决。

2.为什么使用ORM?

当我们实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。

3.对象-关系映射解释:

A . 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个Java类(模型),表的字段就是这个类的成员变量

B . 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成java类,使系统在代码层面保持准确统一

C .易懂:ORM使数据库结构文档化。比如MySQL数据库就被ORM转换为了java程序员可以读懂的java类,java程序员可以只把注意力放在他擅长的java层面(当然能够熟练掌握MySQL更好)

D.易用:ORM包含对持久类对象进行CRUD操作的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是讲sql查询全部封装成了编程语言中的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为Bug,方便编码风格的统一和后期维护。

4. ORM的优缺点:

优点:

1)提高开发效率,降低开发成本

2)使开发更加对象化

3)可移植

4)可以很方便地引入数据缓存之类的附加功能

缺点:

1)自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。

2)在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。

5. 常用框架:

(1)Hibernate 全自动 需要写hql语句

(2)iBATIS 半自动 自己写sql语句,可操作性强,小巧

(3)mybatis

(4)eclipseLink

(5)JFinal

原文:https://www.cnblogs.com/halesir88/p/14482819.html

Java orm框架的优缺点,ORM框架的简单介绍相关推荐

  1. Java orm框架的优缺点_ORM框架简介及优缺点

    一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据 ...

  2. 【修真院JAVA小课堂】redis缓存集群简单介绍

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,redis缓存集群简单介绍. 1.背景介绍 redis是一个key-value存储系统.和 ...

  3. java 随机生成英文名_java随机数Reandom(简单介绍)

    简单介绍 Java中存在着两种Random函数 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0, ...

  4. java过滤器应用实例_Servlet过滤器Filter的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Servlet过滤器Filter的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 特点 1)Filter是依赖于Servlet容器,属 ...

  5. python selenium框架_python+selenium之框架设计

    一.自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本, ...

  6. atitit.orm的缺点与orm框架市场占有率,选型attilax总结

    atitit.orm的缺点与orm框架市场占有率,选型attilax总结 1. attilax的orm框架要求 1 2. orm框架市场占有率 2 3. spring jdbc templt 3 4. ...

  7. Web框架中的ORM框架

    Web框架中的ORM框架 在 Python 实现的 Web 框架中,通过 API 接口来访问后端的视图函数,视图函数对数据库中的数据进行处理然后返回给前端.在这个过程中,视图函数不是直接通过 SQL ...

  8. mysql django构架图_Django框架之数据库ORM框架

    首先,我来介绍一下什么是ORM框架: O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮 ...

  9. Java--SSH,SSM和Spring Boot框架区别优缺点

    一.SSH(Struts + Spring + Hibernate) 1.基本概念 SSH框架是JAVA EE中三种框架所集成,分别是Struts,Spring,Hibernate框架所组成 集成SS ...

最新文章

  1. flask学习笔记之blueprint
  2. 聊聊高并发下的接口幂等性
  3. 数据结构一:链表(约瑟夫问题)
  4. ajax请求flask以后得到的响应查看
  5. 无线传感器在智能家居中的应用
  6. mysql主从是同步还是异步_mysql主从同步异步场景的分析
  7. Python 第二篇:python字符串、列表和字典的基本操作方法
  8. 南怀瑾先生说中风急救关键(非常推荐!!)
  9. 数据分析流程和特征工程
  10. 连接器与加载器pdf_pdf转换为excel,你不会,同事点点鼠标2分钟就搞定了
  11. matlab连通域分割_MATLAB车牌识别之7个字符切割浅谈【抽丝剥茧】
  12. 以上是对图像的椒盐噪声处理,在p_temp[j*wide+i]=0;这句程序中为什么要乘以wide,求解,谢谢!
  13. 【PAT B1019/A1069】数字黑洞
  14. SQL岗位30个面试题,SQL面试问题及答案
  15. 自定义 QTreeView
  16. collect2: error: ld returned 1 exit status(解决方案大总结)
  17. LSTM之父最新长文:现代AI和深度学习发展史
  18. js 关键技术集合
  19. 计算机用户帐户域怎么查找,win7计算机域怎么查?小编教你查看计算机域、工作机组的方法...
  20. IJCAI 2019 | 通过交互提升机器翻译质量

热门文章

  1. 技术真好玩第一期(2019-11-01)
  2. 布道微服务_03服务的发布和引用
  3. 用python绘制熊猫图案_python – 有没有办法在ggplot中绘制一个熊猫系列?
  4. Android网卡网速测试
  5. Android 局部刷新
  6. 曲线绕x轴旋转曲面方程_曲线绕着Ox轴旋转所得的曲面方程是______。
  7. Word调整页眉与标题/正文的距离
  8. 添加域后如何将域用户加入本地管理员组
  9. 输入参数varargin
  10. 两例司法实践撕开了一个口子,区块链应用落地会加速吗?