ORM

2018-07-22  本文已影响0人  SongLiang

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.

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.

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...

粒度

继承

继承是面向对象语言中一个常见的特性,然而,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等。

上一篇下一篇

猜你喜欢

热点阅读