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采用了另一种思路,提供了另一种折中。

转载于:https://www.cnblogs.com/qsort/archive/2012/02/24/2367220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值