一种将实体对象映射到数据库中的方法及装置制造方法及图纸

技术编号:6103724 阅读:262 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种将实体对象映射到数据库中的方法,包括:按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值;其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是否可用;若可用,则将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的ID值;依据所述实体对象ID将实体对象持久化至数据库中。本发明专利技术可以快速为新建的实体对象分配ID值,提高数据处理效率,并保证数据的完整性。

【技术实现步骤摘要】

本专利技术涉及对象关系映射的
,特别是涉及一种将实体对象映射到数据库中的方法及一种将实体对象映射到数据库中的装置。
技术介绍
对象-关系映射(Object/RelationMapping,简称 0/R Mapping),是随着面向对象的发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法, 关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是实体对象的两种表现形式,实体对象在面向关系领域中表现为对象,在数据库中表现为关系数据。因此,对象-关系映射(0/R Mapping)系统主要实现实体对象到关系数据库数据的映射。0/R Mapping是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,0/R Mapping是通过使用描述对象和数据库之间映射的元数据,将实体对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。在将实体对象反映到数据库中时,很重要的一个工作就是为其分配唯一的ID,0/R Mapping技术通常是将该ID作为实体对象维系面向对象领域与数据库领域的桥梁。具体而言,实体对象在面向对象领域中以对象实例体现,在数据库领域中以数据表中的记录体现,在数据表中,每一条记录都是唯一的,用以存储不同的实体对象。数据表的主键对应于实体对象的ID,用以唯一标识该实体对象。一般而言,实体对象ID的类型为整型或长整型,并且实体对象的ID通常以递增的方式分配。现有技术中,通常采用以下三种方式为实体对象分配ID 第一种方法,检索该类实体对象对应数据表的主键栏位,得到主键的最大值,然后取一个比该最大值更大的整数,作为该实体对象的ID值;第二种方法,在数据库中为所有实体对象对应的数据表配置一个序列,通过序列来维护每一个数据表下一个待添加记录的主键值。在给该新建的实体对象分配ID值时,通过访问该类实体对象对应数据表的序列,将取到的序列值作为该实体对象的ID值。每次序列被访问后,均自动往后增长;第三种方法,在数据库中为所有实体对象对应的数据表创建一个触发器,在创建时为对象分配一个随机ID或者不分配ID,待将其信息存储到数据表中时,触发触发器,为新增记录分配一个新的主键值,将该主键值作为该新建实体对象的ID值。触发器通过两种方式得到新的主键值一是通过检索其对应的数据表的主键栏位,得到主键的最大值,然后取一个比该最大值更大的整数,作为新的主键值;二是通过访问其对应数据表的序列取到新的序列值,作为新的主键值。以上三种方法主要存在以下问题1、第一种方式,在每次新建实体对象时,都要向数据库发起一次查询操作,检索该类实体对象对应的数据表,效率低下;2、第二种方式,在每次新建实体对象时,都要向数据库发起一次查询操作,访问对应的序列,效率比第一种方法要高。但是在数据库中有若干个序列,降低了数据库的运行效率,且为数据库的维护增加了工作量;3、第三种方式,在每次新建实体对象时,不需要向数据库发起访问操作,在事务处理提交时,才向数据库发起一次更新操作,多个实体对象的信息一并提交给数据库,由数据库的若干个触发器来为所有新增记录分配主键值。效率比前两种方式都要高。但是从数据库的角度来看,与前面两种方式没有区别,仅减少了向数据库发起查询操作的次数。更加严重的,在未将实体对象提交给数据库之前,实体对象的ID值与最终存储到数据库中的主键值通常不一致,那么这些实体对象在参与逻辑处理时,很可能会引起数据完整性的问题
技术实现思路
本专利技术所要解决的技术问题是提供一种将实体对象映射到数据库中的方法及装置,用以快速为新建的实体对象分配ID值,提高数据处理效率,并保证数据的完整性。为了解决上述技术问题,本专利技术实施例公开了一种将实体对象映射到数据库中的方法,包括按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值;其中,所述 ID属性信息包括最小可用的ID值以及ID取值跨度;依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是否可用;若可用,则将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的ID值;依据所述实体对象ID将实体对象持久化至数据库中。优选的,所述ID属性信息和待分配的ID值记录在ID缓存器中,所述获取ID属性信息以及待分配的ID值的步骤包括依据新建实体对象的名称从所述ID缓存器中获取对应的ID属性信息和待分配的 ID值。优选的,所述ID属性信息存储在数据库中的ID记录表中,所述获取ID属性信息以及待分配的ID值的步骤还包括如果ID缓存器中不存在新建实体对象的名称对应的ID属性信息,则从所述ID记录表中依据新建实体对象的名称提取对应的ID属性信息写入ID缓存器,并将ID缓存器中最小可用的ID值作为待分配的ID值写入ID缓存器。优选的,所述获取ID属性信息以及待分配的ID值的步骤还包括如果ID记录表中不存在该新建实体对象的名称对应的ID属性信息,则初始化所述ID属性信息,所述初始化包括导入实体对象的名称;依据实体对象所对应的数据库表中现有记录的最大主键值设置最小可用ID值; 如果实体对象所对应的数据库表中无记录,则将最小可用ID值设置为1 ;以及,依据预设的ID取用个数设置ID取值跨度。优选的,所述的方法,还包括在将所述ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID值为ID缓存器中记录的最小可用ID值与ID取值跨度之和。优选的,所述判断待分配的ID值是否可用的步骤包括判断所述待分配的ID值是否大于最小可用的ID值与ID取值跨度之和减1,若否, 则确定所述待分配的ID值可用; 所述更新待分配的ID值的步骤为,更新待分配的ID值为当前实体对象的ID加1。优选的,所述的方法,还包括若当前待分配的ID值不可用,则依据所述新建实体对象的名称,重新获取待分配的ID值。优选的,所述重新获取待分配的ID值的步骤包括以下子步骤子步骤S11、清空ID缓存器;子步骤S22、依据所述新建实体对象的名称,在数据库的ID记录表中提取对应的 ID属性信息;子步骤S33、将所述ID属性信息写入ID缓存器;其中,所述ID属性信息包括ID取值跨度以及最小可用ID值;子步骤S44、将所述最小可用ID值作为当前待分配的ID值,并写入ID缓存器;子步骤S55、在将ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID 值为,ID缓存器中记录的最小可用ID值与ID取值跨度之和。优选的,若所述待分配的ID值大于最小可用的ID值与ID取值跨度之和减1,则确定该待分配的ID值不可用;所述ID属性信息还包括最大ID值,所述重新获取待分配的ID 值的步骤还包括在子步骤S33前执行的以下子步骤子步骤S 12、判断从所述ID记录表中提取的ID属性信息中的最小可用ID值是否大于最大ID值;若是,则执行子步骤S15 ;若否,则执行子步骤S13 ;子步骤S13、判断所述最小可用ID值与ID取值跨度之和减1,是否大于最大ID值; 若是,则执行子步骤S14 ;若否,则执行子步骤S33 ;子步骤S14、将ID记录表中的ID取值跨度更新为,最大ID值减最小可用的ID值加1,并转至执行子步骤S33;子步骤S15、终止实体对象ID的分配。本专利技术实施例还公开了一种将实体对象映本文档来自技高网
...

【技术保护点】
1.一种将实体对象映射到数据库中的方法,其特征在于,包括:按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值;其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是否可用;若可用,则将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的ID值;依据所述实体对象ID将实体对象持久化至数据库中。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐凌遥
申请(专利权)人:中国有色矿业集团有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1