ORM概况了解
来源:互联网 发布:数据挖掘学习 编辑:程序博客网 时间:2024/06/05 00:15
1.1 ORM简介
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
1.2 ORM与DB Helper Library
许多Helper提供了很多的强大的功能,封闭交互底层,实体类支持,提供SQL翻译功能。ORM比之这些Helper只是多提供了一层,他尝试封闭的自动化的(或是映射文件)来实现关联。以前,这都是我们手打的。ORM试图取代helper,为此提供了更多的功能。
1.3 优缺点
1.3.1 优点:
1.抛弃了传统的面向过程的方法,远离数据库和SQL,使开发更多的面向业务领域;
2.ORM实现的系统,具有很强的可维护性,很快满足用户需求的变更;
3.ORM使我们摆脱了SQL,但并不代表我们不再使用SQL,事实上,复杂的查询和报表我仍然推荐使用SQL,良好的系统应该可以兼容以前的方式;
4.ORM更适合复杂的系统(这里使用复杂,而不是大型),而不是小的系统,因为这样的系统要求建造速度快,系统稳定,他们的业务规则异常的复杂,但他们对系统的性能要求并不是很高(相对电信这样的性能要求)。
1.3.2 缺点:
1.性能问题,带来大约20%的性能损失(ORM无法解决每个对象实例在构造时分配内存所耗的时间);现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。
2.项目初期,需要写的代码比常规的要多很多,而且有些代码不一定马上就用;
1.4 ORM框架
只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有三种:Hibernate(Nhibernate),iBATIS,EclipseLink。
设计思路其实很简单,和其余的ORM框架一样。通过某种关系来维持实体对象和数据库之间的关系,然后通过实体对象的操作来实现数据库的操作。
1.5 ORM一般包括四部分
1.5.1 第一部分
一个对持久类对象进行CRUD操作的API;
JPA
EntityManager
(由EntityManagerFactory创建)
Hibernate
Session
(由SessionFactory创建)
1.5.2 第二部分
一个语言或API用来规定与类和类属性相关的查询;
JPA
JPQL语言 (Query接口)
Hibernate
HQL语言 (Query接口)
1.5.3 第三部分
一个规定MAPPING METADATA的工具;
JPA
用注解
Hibernate
*.hbm.xml
1.5.4 第四部分
一种技术可以让ORM的实现同事务对象一起进行DIRTYCHECKING,LAZY ASSOCIATION FETCHING以及其他的优化操作。
JPA
JpaTransactionManager
Hibernate
Transaction
- ORM概况了解
- DB2概况了解
- 了解服务器概况
- tensorfolw概况了解
- 【自动化测试】Selenium概况了解
- ORM初步了解
- 让大家了解一下ORM
- 21张图帮你快速了解当前移动互联网发展概况
- 了解周边美食概况,就用百度App搜一夏
- SDK技术的发展进程以及了解概况
- 了解ORM的一个好地方
- 9.26 只需要了解ORM技术
- .Net中初步了解ORM框架
- Android 简单了解ORM/GreenDao(GreenDao3.2.0使用教程)
- 干货!手把手教你如何快速了解一个行业--游戏产业概况
- 几个用来了解Linux系统的性能概况的Linux命令
- ORM
- ORM
- frame框架
- 技术面试(C++)
- 如何系统地学习数据挖掘?
- BIOS工程师手边事-题前话
- 1102 采药
- ORM概况了解
- List,Set,Map是否继承自Collection接口?
- kafka in a nutshell -- kafka 简介
- this关键字
- 试写一篇
- javabean 规范里 boolean 属性的 getter 可以写成 isXXX ,可是这样的 getter 不方便使用。
- ThreadPoolExecutor几点使用建议
- 测试图片
- HTML DOCTYPE 标签