ORM的全称是Object-Relational Mapping,即对象关系映射。ORM思想的提出来源于对象与关系之间相悖的特性。我们很难通过对象的继承与聚合关系来描述数据表中一对一、一对多以及多对多的关系。而面向对象思想中有关抽象与多态的原理,也无法通过关系数据库的SQL语句得以彰显。因此,我们需要在面向对象与面向关系之间找到一个平衡点,ORM于是应运而生。

目前ORM框架的产品非常之多,除了个大公司、组织的产品外,其他一些小团队也在推出自己的ORM框架。目前流行的ORM框架有如下这些产品:

(1)Enitiy EJB:Enitiy EJB实际上也是一种ORM技术,这是一直备受争议的组件技术。事实上,EJB为Java EE的蓬勃发展赢得了极高的声誉,EJB作为一种重量级、高花费的ORM技术具有不可比拟的优势。就其他架构设计来讲,依然非常优秀。即使现在十分流行的轻量级Java EE架构,其实质是对经典Java EE架构的模仿——虽然存在些许的改进。EJB3.1也采取了低侵入式的设计,增加了Annotation,也具有极大的吸引力。

(2)Hibernate:目前最流行的开源ORM框架,已经被选作JBoss的持久层解决方案。整个HIbernate项目也一并投入了Jboss的怀抱,而JBoss又加入了RedHat组织,所以现在Hibernate属于RedHat 的一部分。Hibernate 灵巧的设计、优秀的性能,还有其丰富的文档都是其风靡全球的重要因素。

(3)iBatis: Apache软件基金组织的子项目。与其称它为一种ORM框架,不如称它为一中“SQL Mapping”框架。曾经在J2EE的开发中扮演非常重要的角色,但因为不支持存粹的面向对象操作,因此现在逐渐地被取代。但是在一些公司,依然占有一席之地,特别是一些对数据访问特别灵活的地方,iBatis更加的灵活,它允许开发人员直接编写SQL语句。

(4)TopLink:Oracle公司的产品,作为一个遵循OTN协议的商业产品,TopLink 在开发过程中可以自由地下载和使用,但是一旦作为商业产品被使用,则需要收取费用。由于这一点,TopLink 的市场占有率不高。

(5)OBJ:Apache软件基金组织的子项目。另一个开源的ORM框架,可以说是Apache作为iBatis之后的取代产品,也是非常优秀的O/R Mapping框架,但是由于Hibernate 的广芒太盛,所以并未有广泛的使用,而且由于OJB的开发文档不是很多,这也影响了OJB的流行。

什么是ORM思想?常用的基于ORM的框架有哪些?各有什么特点?的更多相关文章

  1. 第二篇:操纵MySQL数据库(2) - 基于ORM思想的SQLAlchemy库

    前言 本文讲解在Python语言中使用SQLAlchemy库操纵MySQL数据库的方法. 由于具体内容涉及较多,本文仅以插入及展示数据为例,更多内容请查阅有关文档. ORM ORM也即对象 - 关系映 ...

  2. EF怎样实现ORM思想的(转载)

    EF简介 实体框架(Entity Framework)简称EF,是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案.是ADO.NET中的一组支持开发面向数据的软件应 ...

  3. 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作

    spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...

  4. ORM思想解析

    ORM思想解析 qq_16055765 2019-01-10 11:29:08 1688 收藏 1 分类专栏: # hibernate 最后发布:2019-01-10 11:29:08首次发布:201 ...

  5. 什么是orm思想?

    什么是orm思想? 1.hibernate使用orm思想对数据库进行crud操作 2.在web阶段学习javabean更正确的叫法是:实体类 3.orm: object   relational   ...

  6. ORM 之常用重点 ******

    总体介绍orm>>点我 单表查询api汇总  如 distinc(),order_by()  id__gt=1  id__inrange=[ 1,3 ]  左右都包含     设置logg ...

  7. ORM思想

    -------------------siwuxie095 什么是 ORM 思想 1.Hibernate 使用 ORM 思想对数据库进行 CRUD 操作 2.ORM:Object Relational ...

  8. Django - 基于orm实现用户增删改查

    1.基于orm实现用户新增 user_info.html中,增加代码: views.py中,在原user_info函数中,增加判断代码: 备注:最后一句,可以通过return redirect 实现, ...

  9. day07 ORM中常用字段和参数

    day07 ORM中常用字段和参数 今日内容 常用字段 关联字段 测试环境准备 查询关键字 查看ORM内部SQL语句 神奇的双下划线查询 多表查询前提准备 常用字段 字段类型 AutoField in ...

随机推荐

  1. JVM内存结构的组成、各部分功能作用

    一.程序计数器  作用:是记住下一条jvm指令的执行地址  特点: 是线程私有的 不会存在內存溢出 二.虚拟机栈 每个线程运行时所需要的内存,称为虚拟机栈 每个栈由多个栈帧(Frame) 组成,对应着 ...

  2. python-xlutils模块-修改excel

    前言 xlrd库用于读取excel文件中的数据,xlwt库用于将数据写入excel文件,修改用xlutils模块: xlutils库也仅仅是通过复制一个副本进行操作后保存一个新文件,像是xlrd库和x ...

  3. 内网安全---隐藏通信隧道基础&&网络通信隧道之一ICMP隧道

    一,隐藏通信隧道基础知识 在完成信息收集之后,我们要判断流量是否出的去.进的来.隐藏通信隧道技术常用于在受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输. 1.常见的隧道: .网络层 ...

  4. IP欺骗实验

    实验目的 1.掌握IP欺骗的原理 2.学会利用IPSpoof软件工具进行伪造源IP地址的IP欺骗. 实验内容 使用IPSpoof进行本机IP地址修改,与目标主机通信,进行IP欺骗实验 实验环境描述 1 ...

  5. 【C# 线程】Thread类 以及使用案例

    System.Threading.Thread类 涉及到的类和枚举 Volatile 类Interlocked 类SpinLock 类SpinWait类Barrier 类ThreadLocal< ...

  6. VS编译时,出现无法将文件“obj\Debug\*.exe”复制到“bin\Debug\*.exe”。文件“bin\Debug\*.exe”正由另一进程使用,因此该进程无法访问此文件。

    重命名将MyThread.exe 重命名 一下其他名字后就可以了.

  7. Zookeeper集群搭建及原理

    1 概述 1.1 简介 ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分 ...

  8. js 数组/对象/日期的浅克隆

    //封装 function clone (obj) { // Handle the 3 simple types, and null or undefined if (null == obj || & ...

  9. c/c++(c++和网络编程)日常积累(三)

    asio::transfer_all() 有空研究一下这个字段 malloc和new的区别 https://blog.csdn.net/weixin_39411321/article/details/ ...

  10. Python 内存管理与垃圾回收

    Python 内存管理与垃圾回收 参考文献:https://pythonav.com/wiki/detail/6/88/ 引用计数器为主标记清除和分代回收为辅 + 缓存机制 1.1 大管家refcha ...