[TOC]数据库
下图是一个最简单的映射图session
下图是一个比较完整的映射图,包含了一对多,多对一这种映射关系.数据结构
数据持久化,就是将数据(就是变量里面的值)保存起来(从内存等掉电丢失的设备 --> 硬盘等掉电能够恢复的设备上),以便未来用到的时候可以很方便的恢复.在ORM这里特指将数据保存到数据库.app
因此本文中的数据持久化就是将内存中的数据模型(任何数据结构或对象)转换为存储模型(关系模型,XML,二进制流),以及将存储模型转换为内存中的数据模型的统称.dom
数据模型能够是任何数据结构或对象模型,存储模型能够是关系模型,XML,二进制流等.学习
持久化封装了数据访问细节.fetch
数据模型若是是面向对象方式,也叫domain model .spa
ORM里面分红两种类型.code
持久化过程和domain model关系比较紧密,或者说,domain model集成了持久化过程的方法,这种模式就叫作Active Record.对象
Ruby On Rails里面的ORM好像也叫Active Record,与本文中的Active Record不是一个概念.固然ROR中的Active Record也是Active Record类型.
例子
user_record = User(name="ed", fullname="Ed Jones") user_record.save() user_record = User.query(name='ed').fetch() user_record.fullname = "Edward Jones" user_record.save()
domain model和持久化过程是分开的.
例子,看主体
dbsession = start_session() # 持久化 user_record = User(name="ed", fullname="Ed Jones") # domain model dbsession.add(user_record) # 持久化 user_record = dbsession.query(User).filter(name='ed').first() # 持久化 user_record.fullname = "Edward Jones" # domain model dbsession.commit() # 持久化
Active Record
Data Mapper