java rails orm_ORM中的一些概念

[TOC]

学习ORM过程中的一些概念理解

ORM

代码中的类和数据库中的表的映射.

代码中的实例和数据库中的记录的映射.

下图是一个最简单的映射图

5fb7151ff4f1ead62a191f1c6fa59c9c.png

下图是一个比较完整的映射图,包含了一对多,多对一这种映射关系.

f6efcfaeeda616426e5f98556b372767.png

数据持久化 VS 为什么要持久化

数据持久化

数据持久化,就是将数据(就是变量里面的值)保存起来(从内存等掉电丢失的设备 --> 硬盘等掉电可以恢复的设备上),以便将来用到的时候能够很方便的恢复.在ORM这里特指将数据保存到数据库.

所以本文中的数据持久化就是将内存中的数据模型(任何数据结构或对象)转换为存储模型(关系模型,XML,二进制流),以及将存储模型转换为内存中的数据模型的统称.

数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型,XML,二进制流等.

为什么要持久化?

持久化封装了数据访问细节.

可以减少访问数据库存储模型的次数

代码可重用

低耦合,数据模型和存储模型分离,不依赖于底层数据库的类型,更换数据库更容易.

domain model

数据模型如果是面向对象方式,也叫domain model .

Active Record VS Data Mapper

ORM里面分成两种类型.

Active Record

持久化过程和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()

Data Mapper

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

Django ORM

Data Mapper

SQLalchemy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值