浅析对象关系映射

对象关系映射(ORM)通过元数据实现面向对象语言中的对象与关系数据库的映射。本文探讨了ORM在类属性映射、类映射为数据表、类间关系映射为键值等方面的应用策略,分析了各种映射方式的优缺点,并强调了在实际应用中应根据系统需求设计合适的ORM模型。
摘要由CSDN通过智能技术生成

        对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,来实现面向对象语言程序中的对象与关系数据库中的关系的映射。根据对象与关系数据库的特性,ORM一般在以下几个方面实现。

1.类的属性映射为数据表的字段

        将类中的属性映射成数据表的字段是一种很自然的想法,但是类的属性和数据表的字段并不是一一对应的。一个属性可以对应0或多个数据表字段。比如,作为保存中间结果或标明类在某一运行时刻状态的属性就不需要保存在数据库表中。

2.类映射成数据表

        将类映射成数据表时,通常采用的映射策略有以下几种:
        (1)一个类层次对应一个数据表
        这里所说的一个类层次,指的是父类及其所有子类。将父类和子类中有持久性需求的属性映射到一张数据表中,使用一个标志字段区分各个子类。这种方法实现起来比较简单,但是类与数据库之间的耦合程度较高;并且因为子类所特有的属性都被映射成了字段,所以数据表中的冗余字段比较多,空值也有很多,空间的利用率较低。
        目前来说,有一种方法可以克服这种映射方式冗余列多的缺点,那就是将子类的公共属性映射成一个字段,该字段使用json或xml等方式存储子类的所有特有属性。但是这种方法并不符合数据库设计中的1NF范式,应为该字段还可以进一步细分。
        (2)一个实体类对应一个数据表
        在这种实现方式中,父类并不映射成数据库中的表,只有子类会被映射成数据库中的表,该表的字段包括从父类继承的属性以及子类特有的属性。这种映射模型使得类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值