Object Relational Mapping

ORM是Object Relational Mapping的缩写,目的在于解决object-orient programming与relational database之间的不一致(所谓Object-relational impedance mismatch,impedance-阻抗这个词,用的很形象)。

这种不一致产生的原因很容易理解,两边是两个不同的domain,各自的模型都不尽相同,更多参见wiki页面。

 

实现ORM的两种思路:Data Mapper Pattern与Active Record Pattern。

Active Record Pattern是一种从RDBMS的模型出发,将其反应在object-oriented模型中的做法。具体来说,类通常包含Insert、Update、Delete等方法,类的数据成员基本等同于对应表中的列;换言之,该类的一个对象对应了RDBMS中某个表的一行。显然这种做法的限制性是比较大的,而且两边的耦合度很高。

Data Mapper Model的做法是(和其他问题一样),引入一个抽象层,由这个层来完成两侧的对接工作。

 

Java圈子的Hibernate,Python圈子的SQLAlchemy,都是基于Data Mapping的ORM框架。

 

ORM:http://en.wikipedia.org/wiki/Object-relational_mapping

http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch

Active Record Pattern:http://en.wikipedia.org/wiki/Active_record_pattern

Data Mapper Pattern:http://www.martinfowler.com/eaaCatalog/dataMapper.html

Hibernate官网的about-orm:http://www.hibernate.org/about/orm

SQLAlchemy:http://en.wikipedia.org/wiki/SQLAlchemy

 

补充:ibatis采用了另一种思路,提供了另一种折中。

posted @ 2012-02-24 21:31  qsort  阅读(476)  评论(0编辑  收藏  举报