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

文档序号:6356858阅读:135来源:国知局
专利名称:一种将实体对象映射到数据库中的方法及装置的制作方法
技术领域
本发明涉及对象关系映射的技术领域,特别是涉及一种将实体对象映射到数据库中的方法及一种将实体对象映射到数据库中的装置。
背景技术
对象-关系映射(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的分配。本发明实施例还公开了一种将实体对象映射到数据库中的装置,包括属性获取模块,用于按照新建实体对象的名称,获取对应的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值。优选的,所述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取值跨度之和减1,是否大于最大ID值; 若是,则触发取值跨度更新子模块;若否,则触发所述ID属性写入子模块;取值跨度更新子模块用于将ID记录表中的ID取值跨度更新为,最大ID值减最小可用的ID值加1,并调用所述ID属性写入子模块。与现有技术相比,本发明具有以下优点本发明实施例只需要在第一次创建实体对象时,向数据库发起一次访问操作以将对应的ID属性信息写入ID缓存器,此后,针对该类新建实体对象的ID分配,可以直接依据 ID缓存器进行,直到用完ID缓存器中按照ID取值跨度所取用的ID值数量,才向数据库发起一次访问ID记录表的操作。应用本发明实施例,不用频繁访问数据库,不用在数据库中创建若干个序列、触发器,可以快速为新建实体对象分配ID,有效提高了数据处理的效率; 还可以使任何实体对象创建时的ID值与最终存储到数据表中的主键值一致,保证不出现数据完整性问题。


图1是本发明的一种将实体对象映射到数据库中的方法实施例1的步骤流程图;图2是本发明的一种具体示例中进行数据库中ID记录表的初始化的操作流程图;图3是本发明的一种具体示例中提取ID属性信息写入ID缓存器,并在ID缓存器中生成待分配的ID值的操作流程图;图4是本发明的一种具体示例中为新建实体对象分配ID,并更新待分配的ID值的操作流程图;图5是本发明的一种将实体对象映射到数据库中的方法实施例2的步骤流程图;图6是本发明的一种实体对象ID分配的具体示例的流程图;图7是本发明的一种将实体对象映射到数据库中的装置实施例的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。本发明实施例的核心构思之一在于针对新建的实体对象在数据库中记录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,示出了本发明的一种将实体对象映射到数据库中的方法实施例1的步骤流程图,具体可以包括以下步骤步骤101、按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值; 其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;步骤102、依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是
否可用; 步骤103、在所述待分配的ID值可用的情况下,将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的ID值;步骤104、依据所述实体对象ID将实体对象持久化至数据库中。在本发明的一种优选实施例中,所述ID属性信息和待分配的ID值记录在ID缓存器中,在这种情况下,所述步骤101可以包括如下子步骤子步骤Al、依据新建实体对象的名称从所述ID缓存器中获取对应的ID属性信息和待分配的ID值。在本发明的一种更为优选的实施例中,所述ID属性信息还存储在数据库中的ID 记录表中,如果ID缓存器中不存在新建实体对象的名称对应的ID属性信息,则可以从所述 ID记录表中提取实体对象的名称对应的ID属性信息写入ID缓存器,具体而言,在这种情况下,所述步骤101还可以包括如下子步骤子步骤A2、如果ID缓存器中不存在新建实体对象的名称对应的ID属性信息,则从所述ID记录表中依据新建实体对象的名称提取对应的ID属性信息写入ID缓存器,并将 ID缓存器中最小可用的ID值作为待分配的ID值写入ID缓存器。在本发明的一种更为优选的实施例中,如果数据库中的ID记录表中没有该新建实体对象的名称对应的ID属性信息,则在ID记录表中初始化该ID属性信息;具体而言,在这种情况下,所述步骤101还可以包括如下子步骤子步骤A3、如果ID记录表中不存在该新建实体对象的名称对应的ID属性信息,则初始化所述ID属性信息,所述初始化包括导入实体对象的名称;依据实体对象所对应的数据库表中现有记录的最大主键值设置最小可用ID值, 如果实体对象所对应的数据库表中无记录,则将最小可用ID值设置为1 ;以及,依据预设的ID取用个数设置ID取值跨度。在具体实现中,在将所述ID属性信息写入ID缓存器后,需要对ID记录表进行更新,所述更新操作包括更新ID记录表中的最小可用ID值为ID缓存器中记录的最小可用 ID值与ID取值跨度之和。作为本发明一种具体应用的示例,所述步骤102可以包括如下子步骤判断所述待分配的ID值是否大于最小可用的ID值与ID取值跨度之和减1,若否, 则确定所述待分配的ID值可用;在这种情况下,所述更新待分配的ID值的步骤则可以为,更新待分配的ID值为当前实体对象的ID加1。
为使本领域技术人员更好地理解本发明,以下通过一种应用本发明实施例的示例进一步说明本发明。一、初始化数据库中的ID记录表;针对当前需要新建的某类实体对象,设置ID记录表,并初始化所述ID记录表中记录的ID属性信息,主要包括实体对象的类名,最小可用的ID值,以及,ID取值跨度,还可以根据需要设置其它ID属性信息,比如,该类实体对象ID的最大值、最小值等。参考图2,在实际中,所述初始化的操作具体可以包括以下步骤步骤21、根据实体对象的类名查询数据库中的ID记录表,转步骤22 ;步骤22、检查是否存在该实体对象对应的ID属性信息,如果存在则转步骤23,否则转步骤24 ;步骤23、在所述ID记录表中插入一条记录,记录的各栏位值分别如下“实体对象名称”为该实体对象的类名;“最小可用的ID值”等于“最小ID值”,大于该实体对象所对应数据表中现有记录最大的主键值;"ID取值跨度”表示一次取入ID缓存器的ID个数,可以是为该类实体对象预置的值,也可以是共用的预置值;“最大ID值”可以是为该类实体对象预置的值,也可以是共用的预置值;“最小ID值”可以是为该类实体对象预置的值,也可以是共用的预置值;并且“最小ID值”不大于“最大ID值”。然后转步骤24;步骤24、ID记录表中该类实体对象的ID属性信息初始化结束。当然,上述初始化操作的过程仅仅用作示例,本领域技术人员依据实际情况采用任一种方法初始化ID记录表都是可行的,例如,通过导入预制的初始化信息,一次初始化 ID记录表;本发明对此无需加以限制。二、提取ID属性信息写入ID缓存器,并在ID缓存器中生成待分配的ID值;所述ID缓存器中可分配ID值的范围由ID取值跨度确定,比如ID取值跨度为10, 则当前ID缓存器可用于分配10个ID值。具体而言,所述ID缓存器中可分配ID值的范围大于等于“最小可用ID值”,小于等于“最小可用ID值”与“取值跨度”之和减1。在ID缓存器中,针对每条记录维护一个“ID游标”,“ID游标”的值就是下一个待分配的ID值,ID游标将从“最小可用ID值”开始,随着每一个实体对象ID被取用而逐步增加。参考图3,在实际中,所述在ID缓存器中生成记录的操作,具体可以包括以下步骤步骤31、根据新建实体对象的名称,查询ID缓存器,转步骤32 ;步骤32、检查是否存在该实体对象对应的ID属性信息和待分配ID值,如果存在则转步骤34,如果不存在则转步骤33 ;步骤33、根据新建实体对象的名称,查询数据库中的ID记录表,转步骤35 ;步骤34、从ID缓存器中得到该类实体对象的ID属性信息和待分配的ID值。步骤35、提取该实体对象对应的ID属性信息,并写入ID缓 存器中,同时依据所述 ID属性信息中最小可用的ID值,在ID缓存器中生成当前待分配的ID值(即初始的ID游标);然后转步骤31。
权利要求
1.一种将实体对象映射到数据库中的方法,其特征在于,包括按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值;其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是否可用; 若可用,则将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的 ID值;依据所述实体对象ID将实体对象持久化至数据库中。
2.如权利要求1所述的方法,其特征在于,所述ID属性信息和待分配的ID值记录在 ID缓存器中,所述获取ID属性信息以及待分配的ID值的步骤包括依据新建实体对象的名称从所述ID缓存器中获取对应的ID属性信息和待分配的ID值。
3.如权利要求2所述的方法,其特征在于,所述ID属性信息存储在数据库中的ID记录表中,所述获取ID属性信息以及待分配的ID值的步骤还包括如果ID缓存器中不存在新建实体对象的名称对应的ID属性信息,则从所述ID记录表中依据新建实体对象的名称提取对应的ID属性信息写入ID缓存器,并将ID缓存器中最小可用的ID值作为待分配的ID值写入ID缓存器。
4.如权利要求3所述的方法,其特征在于,所述获取ID属性信息以及待分配的ID值的步骤还包括如果ID记录表中不存在该新建实体对象的名称对应的ID属性信息,则初始化所述ID 属性信息,所述初始化包括 导入实体对象的名称;依据实体对象所对应的数据库表中现有记录的最大主键值设置最小可用ID值;如果实体对象所对应的数据库表中无记录,则将最小可用ID值设置为1 ; 以及,依据预设的ID取用个数设置ID取值跨度。
5.如权利要求3所述的方法,其特征在于,还包括在将所述ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID值为ID缓存器中记录的最小可用ID值与ID取值跨度之和。
6.如权利要求1、2、3、4或5所述的方法,其特征在于,所述判断待分配的ID值是否可用的步骤包括判断所述待分配的ID值是否大于最小可用的ID值与ID取值跨度之和减1,若否,则确定所述待分配的ID值可用;所述更新待分配的ID值的步骤为,更新待分配的ID值为当前实体对象的ID加1。
7.如权利要求6所述的方法,其特征在于,还包括若当前待分配的ID值不可用,则依据所述新建实体对象的名称,重新获取待分配的ID值。
8.如权利要求7所述的方法,其特征在于,所述重新获取待分配的ID值的步骤包括以下子步骤子步骤S11、清空ID缓存器;子步骤S22、依据所述新建实体对象的名称,在数据库的ID记录表中提取对应的ID属性信息;子步骤S33、将所述ID属性信息写入ID缓存器;其中,所述ID属性信息包括ID取值跨度以及最小可用ID值;子步骤S44、将所述最小可用ID值作为当前待分配的ID值,并写入ID缓存器; 子步骤S55、在将ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID值为, ID缓存器中记录的最小可用ID值与ID取值跨度之和。
9.如权利要求8所述的方法,其特征在于,若所述待分配的ID值大于最小可用的ID值与ID取值跨度之和减1,则确定该待分配的ID值不可用;所述ID属性信息还包括最大ID 值,所述重新获取待分配的ID值的步骤还包括在子步骤S33前执行的以下子步骤子步骤S12、判断从所述ID记录表中提取的ID属性信息中的最小可用ID值是否大于最大ID值;若是,则执行子步骤S15 ;若否,则执行子步骤S13 ;子步骤S13、判断所述最小可用ID值与ID取值跨度之和减1,是否大于最大ID值;若是,则执行子步骤S14 ;若否,则执行子步骤S33 ;子步骤S14、将ID记录表中的ID取值跨度更新为,最大ID值减最小可用的ID值加1, 并转至执行子步骤S33 ;子步骤S15、终止实体对象ID的分配。
10.一种将实体对象映射到数据库中的装置,其特征在于,包括属性获取模块,用于按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID 值;其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;ID可用判断模块,用于依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的 ID值是否可用;若可用,则触发ID分配模块;ID分配模块,用于将所述待分配的ID值分配为当前新建实体对象的ID ; ID更新模块,用于在为当前新建实体对象分配完ID后,更新所述待分配的ID值; 持久化操作模块,用于依据所述实体对象ID将实体对象持久化至数据库中。
11.如权利要求10所述的装置,其特征在于,所述ID属性信息和待分配的ID值记录在 ID缓存器中,所述属性获取模块包括缓存获取子模块,用于依据新建实体对象的名称从所述ID缓存器中获取对应的ID属性信息和待分配的ID值。
12.如权利要求11所述的装置,其特征在于,所述ID属性信息存储在数据库中的ID记录表中,所述属性获取模块还包括缓存写入子模块,用于在ID缓存器中不存在新建实体对象的名称对应的ID属性信息时,从所述ID记录表中依据新建实体对象的名称提取对应的ID属性信息写入ID缓存器, 并将ID缓存器中最小可用的ID值作为待分配的ID值写入ID缓存器。
13.如权利要求12所述的装置,其特征在于,所述属性获取模块还包括初始化子模块,用于在ID记录表中不存在该新建实体对象的名称对应的ID属性信息时,初始化所述ID属性信息,所述初始化包括 导入实体对象的名称;依据实体对象所对应的数据库表中现有记录的最大主键值设置最小可用ID值,如果实体对象所对应的数据库表中无记录,则将最小可用ID值设置为1 ;以及,依据预设的ID取用个数设置ID取值跨度。
14.如权利要求12所述的装置,其特征在于,还包括记录表更新模块,用于在将所述ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID值为,ID缓存器中记录的最小可用ID值与ID取值跨度之和。
15.如权利要求10、11、12、13或14所述的装置,其特征在于,所述ID可用判断模块包括计算判断子模块,用于判断所述待分配的ID值是否大于最小可用的ID值与ID取值跨度之和减1,若否,则触发确定子模块;确定子模块,用于确定所述待分配的ID值可用;所述ID更新模块包括更新计算子模块,用于,更新待分配的ID值为当前实体对象的ID加1。
16.如权利要求15所述的装置,其特征在于,还包括ID重取模块,用于在当前待分配的ID值不可用时,依据所述新建实体对象的名称,重新获取待分配的ID值。
17.如权利要求16所述的装置,其特征在于,所述ID重取模块包括缓存清空子模块,用于清空ID缓存器;ID属性提取子模块,用于依据所述新建实体对象的名称,在数据库的ID记录表中提取对应的ID属性信息;ID属性写入子模块,用于将所述ID属性信息写入ID缓存器;其中,所述ID属性信息包括ID取值跨度以及最小可用ID值;ID游标写入子模块,用于将所述最小可用ID值作为当前待分配的ID值,并写入ID缓存器;记录表更新子模块,用于在将ID属性信息写入ID缓存器后,更新ID记录表中的最小可用ID值为ID缓存器中记录的最小可用ID值与ID取值跨度之和。
18.如权利要求17所述的装置,其特征在于,若所述待分配的ID值大于最小可用的ID 值与ID取值跨度之和减1,则确定该待分配的ID值不可用;所述ID属性信息还包括最大 ID值,所述ID重取模块还包括第一判断子模块,用于判断从所述ID记录表中提取的ID属性信息中的最小可用ID值是否大于最大ID值;若是,则触发分配中止子模块;若否,则触发第二判断子模块;分配中止子模块,用于终止结束实体对象ID的分配;第二判断子模块,用于判断所述最小可用ID值与ID取值跨度之和减1,是否大于最大 ID值;若是,则触发取值跨度更新子模块;若否,则触发所述ID属性写入子模块;取值跨度更新子模块用于将ID记录表中的ID取值跨度更新为,最大ID值减最小可用的ID值加1,并调用所述ID属性写入子模块。
全文摘要
本发明公开了一种将实体对象映射到数据库中的方法,包括按照新建实体对象的名称,获取对应的ID属性信息和待分配的ID值;其中,所述ID属性信息包括最小可用的ID值以及ID取值跨度;依据所述最小可用的ID值以及ID取值跨度,判断所述待分配的ID值是否可用;若可用,则将所述待分配的ID值分配为当前新建实体对象的ID,并更新所述待分配的ID值;依据所述实体对象ID将实体对象持久化至数据库中。本发明可以快速为新建的实体对象分配ID值,提高数据处理效率,并保证数据的完整性。
文档编号G06F17/30GK102156717SQ20111007430
公开日2011年8月17日 申请日期2011年3月25日 优先权日2011年3月25日
发明者唐凌遥 申请人:中国有色矿业集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1