ORM

ORM

What is Object/Relational Mapping

http://hibernate.org/orm/what-is-an-orm/
Object Relational Mapping
对象关系映射

Object-relational mapping(ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages. This creates, in effect, a "virtual object database" that can

Many popular database products such as SQL database management systems(DBMS) can only store and manipulate scalar values such as integers and strings organized within tables. The programmer must either convert the object values into groups of simpler values for storage in the database(and convert them back upon retrieval), or only use simple scalar values within the program. Object-relational mapping implements the first approach.

The heart of the problem involves translating the logical representation of the objects into an atomized form that is capable of being stored in the database while preserving the properties of the objects and their relationships so that they can be reloaded as objects when needed. If this storage and retrieval functionality is implemented, the objects are said to be persistent.

与传统数据存取技术的对比

优点:
ORM 要写的代码更少

缺点:
ORM tools 的使用,使得我们不能在代码中使用复杂的实现代码。

Persistence

Persistence simply means that we would like our application's data to outlive the applications process. In Java terms, we would like the state of (some of) out objects to live beyond the scope of the JVM so that same state is available later.

  • (在 Hibernate 中)ORM,是为了帮助应用程序获得持久性,也就是希望应用程序的数据能生存得比应用进程更久一点。

Relational Databases

Specifically, Hibernate ORM is concerned with data persistence as it applies to relational databases(RDBMS). In the world of Object-Oriented applications, there is often a discussion about using an object database(ODBMS) as opposed to a RDBMS. We are not going to explore that discussion here. Suffice it to say that RDBMS remain a very popular persistence mechanism and will so for the foreseeable future.

  • 具体来说,(Hibernate) ORM 是关心关系型数据库中的数据持久性。

The Object-Relational Impedance Mismatch

‘Object-Relational Impedance Mismatch’(sometimes called the ‘paradigm mismatch’)is just a fancy way of saying that object models and relational models do not work very well together. RDBMSs represent data in a tabular format(a spreadsheet is a good visualization for those not familiar with RDBMSs), whereas object-oriented languages, such as Java, represent it as an interconnected graph of objects. Loading and storing graphs of objects using a tabular relational database exposes us to 5 mismatch problems...

  • Object-Relational Impedance Mismatch 是指 object models 和 relational models 不能很好的配合工作。RDBMSs 用列的形式来表示数据,面向对象语言,比如 Java。从 RDBMSs 中读取或者存储 graphs of objects 的数据时,暴露给我们 5 个 mismatch problems

粒度

继承

继承是面向对象语言中一个常见的特性,然而,RDBMSs 并不定义任何类似的东西。

身份

RDBMS 通过 the primary key 来识别唯一性,java,则是来通过 a.equals(b) 来确定 a == b。

关联

关联在面向对象语言里是通过单向的引用,而在RDBMSs 里是通过foreign keys。如果在 Java 里要用到双向的关系,就必须定义 association 两次。

数据浏览

In Java,you navigate from one association to an other walking the object network.
You typically want to minimize the number of SQL queries and thus load several entities via JOINs and select the targeted entities before you start walking the object net work.

Persistence Layer, ORM(Object-Relation Mapping), DAO(Data Access Object) 的区别

持久层(Persistence Layer)是软件体系结构的中的一层,相对于业务层和展示层等。数据访问对象(Data Access Object)是面向对象软件中对访问RDBMS或文件系统的一个封装的模式,通常是将数据访问这部分的逻辑与业务逻辑分离,保证业务对象的代码不随持久化方式的变化而变化。这个模式只是很多持久层模式中的一种。ORM(Object-Relation Mapping),是一种软件技术,解决的问题是面向对象的软件和关系型数据库的不匹配的问题,将对象,对象的属性,以及对象之间的关系保存在关系型数据库的表中。通过配置建立对象和表的映射关系,而由系统自动生成插入,更新,删除和查询的SQL语句。这类技术包括Hibernate、iBatis等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,322评论 0 10
  • 大学三年级了,出去做过家教,促销员,播音,饭店服务员等兼职,在学校里也勤工助学;在学校里参加过舞蹈,小品...
    且如微风阅读 178评论 0 0
  • 曾经在3-8岁小朋友群体中红极一时的《歪歪兔和她的朋友们》第二季强势回归!据悉,这部国内首部原创手偶动画剧正在紧锣...
    孤独症康复阅读 403评论 0 1
  • 所有云淡风轻的喜欢 都在今天之后明天之前不了了之 和黑色一样消逝在黑夜中 其实有那些时候我在想 你说一句流浪天涯 ...
    故生阅读 374评论 0 3
  • 说实话 我不过是一个伪文青 我喜欢文艺的生活 可是我却很少购买装饰去营造 不是因为我没时间 其实是懒 所以 生活还...
    一杯野性的白开阅读 515评论 0 1