CN111966704A - Orm框架实现方法、系统、计算机设备和存储介质 - Google Patents
Orm框架实现方法、系统、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111966704A CN111966704A CN202010656499.7A CN202010656499A CN111966704A CN 111966704 A CN111966704 A CN 111966704A CN 202010656499 A CN202010656499 A CN 202010656499A CN 111966704 A CN111966704 A CN 111966704A
- Authority
- CN
- China
- Prior art keywords
- sql
- configuration information
- database
- mapping
- class definition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 37
- 238000013507 mapping Methods 0.000 claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 28
- 238000003672 processing method Methods 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 26
- 230000003068 static effect Effects 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 14
- 238000010276 construction Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种ORM处理方法、系统、计算机设备和存储介质,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,降低了ORM配置的复杂性,提高了ORM数据处理的效率。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种ORM框架实现方法、系统、计算机设备和存储介质。
背景技术
对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。实际应用中即在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的结构化查询语言(Structured Query Language,简称SQL)语句打交道,只要像平时操作对象一样操作它就可以了。ORM框架就是用于实现ORM技术的程序。
在Java语言领域,常用的ORM框架有Hibernate和Mybatis。其中,Hibernate将数据库的操作转换为对java对象的操作,在框架层将java对象层的操作转换为对应SQL语言,在简单的业务场景下,此框架极大的降低了开发复杂性,但是如果需要使用动态查询,框架就无法处理,必须借助于其他三方框架如queryDSL来实现,而且对于复杂关联SQL,框架支持不友好;Mybatis基于可扩展标记语言(Extensible Markup Language,简称XML)定义SQL的增删改查,并通过解析XML标记实现查询条件拼接,也支持动态查询,但是配置工作比较繁琐,而且检查正确性也需要一定的工作量,其次对于一些复杂动态查询,通过XML标记来描述很难理解并且很难维护。
针对相关技术中,ORM框架配置繁琐的问题,目前尚未提出有效的解决方案。
发明内容
基于此,有必要针对上述技术问题,提供一种对象关系映射ORM处理方法、装置、计算机设备和存储介质。
第一方面,本申请实施例提供了一种对象关系映射ORM处理方法,所述方法包括以下步骤:
基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询SQL之间的映射关系;
在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。在其中一个实施例中,还包括:
在其中一个实施例中,所述基于预设的类定义确定配置信息包括:
加载所述类定义,触发静态代码块执行;
根据所述静态代码块的执行结果以及java反射,确定所述配置信息。
在其中一个实施例中,所述根据所述配置信息和所述数据库操作指令构造SQL包括:
获取所述数据库操作指令中的入参信息;
根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
在其中一个实施例中,所述获取所述数据库操作指令中的入参信息之后,所述方法包括:
根据所述配置信息对所述入参信息进行类定义验证;
在所述类定义验证通过的情况下,根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL,生成操作SQL。
在其中一个实施例中,所述根据所述配置信息和所述数据库操作指令构造SQL生成操作SQL包括:
根据数据库操作指令获取数据源类型;
根据所述配置信息和所述数据库操作指令,通过与所述数据源类型对应的SQL进行SQL构造,生成操作SQL。
在其中一个实施例中,所述基于预设的类定义确定配置信息包括:
获取所述类定义中的表映射;
根据所述表映射建立所述类定义中的类与数据库表之间的映射关系。
在一个实施例中,所述根据所述配置信息和所述数据库操作指令构造SQL生成操作SQL之后,所述方法包括:
获取所述操作SQL,使用JDBC对所述操作SQL进行预编码,并执行数据库操作。
第二方面,本申请实施例还提供一种ORM处理系统,所述系统包括配置解析器和SQL构造器:
所述配置解析器用于基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询SQL之间的映射关系;
所述SQL构造器用于在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述ORM处理方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述ORM处理方法。
上述ORM处理方法、系统、计算机设备和存储介质,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,降低了ORM配置的复杂性,提高了ORM数据处理的效率。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本发明实施例的ORM处理方法的流程图;
图2是根据本发明实施例的ORM处理方法中产生配置信息的流程图;
图3是根据本发明实施例的ORM处理方法中构造SQL的流程图;
图4是根据本发明实施例的ORM处理方法中类定义验证的流程图;
图5是根据本发明实施例的ORM处理方法中生成操作SQL的流程图;
图6是根据本发明实施例中ORM处理系统的结构示意图;
图7是根据本发明优选实施例中ORM框架的结构示意图;
图8是根据本发明实施例中ORM处理计算机设备的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射。ORM可以解决数据库与程序间的异构性,比如:在Java中我们使用String表示字符串,而Oracle中可使用varchar2,MySQL中可使用varchar,SQLServer可使用nvarchar。ORM是一种将内存中的对象保存到关系型数据库中的技术,主要负责实体域对象的持久化、封装数据库访问细节,提供了实现持久化层的另一种模式,描述对象-关系的映射细节,使得ORM中间件能在任何一个Java应用的业务逻辑层和数据库之间充当桥梁。例如,ORM能将java中的类映射为数据库中的表、将java中的对象映射为数据库中的行数据以及将java中对象的属性映射为数据库中的列定义等。
在一个实施例中,图1是根据本发明实施例中ORM处理方法的流程图,如图1所示,提供了一种ORM处理方法,包括以下步骤:
步骤S110,基于预设的类定义确定配置信息,类定义包括查询映射。上述查询映射指示类与查询SQL之间的映射关系。可选地,通过预设的编码实现上述映射,此映射类对应的是一段查询SQL,类中的属性则对应查询返回的结果关系。对预设的类定义进行解析,可以获取到类与查询SQL的映射关系,即配置信息,包括入参、出参、ID参数和SQL定义等,可选地,将上述配置信息存入内存。在一些实施例中,预设的类定义还包括表映射类,表映射建立所述类与数据库表之间的映射关系,表映射类对应数据库表,属性对应数据库表中的列定义,从而使得ORM框架的适用性更强,配置复杂性更低。
步骤S120,在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL。程序运行时,当发生数据库操作,例如增加、删除、查询或者修改等的情况下,基于数据库操作指令获取传入的类定义,根据配置信息调用与该类对应的查询SQL,构造并生成可以对数据库进行数据处理的操作SQL。
上述ORM处理方法,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,在ORM框架中提供了查询映射类,降低了ORM配置的复杂性。
在一个实施例中,图2是根据本发明实施例的ORM处理方法中产生配置信息的流程图,如图2所示,基于预设的类定义确定配置信息包括以下步骤:
步骤S210,加载类定义,触发静态代码块执行;
步骤S220,根据静态代码块的执行结果以及java反射,确定所述配置信息。
在步骤S210至步骤S220中,配置信息获取主要基于java反射和静态代码块。程序运行时,会加载预设定义的类,然后触发静态代码块执行,在配置解析器中对类进行解析,将类与查询SQL的映射关系,存储到内存中。Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。反射机制允许程序在运行时取得任何一个已知名称的类(class)的内部信息,包括其修饰符(modifiers)、属性(fields)和方法(methods)等,并可于运行时改变属性内容或调用方法。Java的静态代码块执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,仅初始化类变量。通过上述java反射以及静态代码块,能够更加高效地根据预设的类定义生成配置信息,进一步降低ORM配置的复杂性。
在一个实施例中,图3是根据本发明实施例的ORM处理方法中构造SQL的流程图,如图3所示,根据配置信息和数据库操作指令构造SQL包括以下步骤:
步骤S310,获取数据库操作指令中的入参信息;
步骤S320,根据预设的入参要求获取入参信息中的有效信息,根据有效信息和配置信息构造SQL。
在步骤S310至步骤S320中,通过预设的入参要求约束数据库操作的入参清单,必须使用约定的操作符,例如:等于、不等于、小于、小于等于、大于、大于等于、包含、不包含、为空、不为空、在之间、不在之间、在之中、不在之中、集合包含等;再通过NULL值判断约定,过滤掉NULL值的入参,例如:a>1and b<null,此入参信息有a、b两项,但是b的判定值为null,则b入参不生效,真正执行的只有a>1这个入参条件,即仅有a为入参信息中的有效信息。通过上述实施方式,可以使得ORM的架构支持复杂关联SQL,支持复杂动态查询。
在一个实施例中,图4是根据本发明实施例的ORM处理方法中类定义验证的流程图,如图4所示,获取数据库操作指令中的入参信息之后,该方法包括以下步骤:
步骤S410,根据配置信息对入参信息进行类定义验证;
步骤S420,在类定义验证通过的情况下,根据预设的入参要求获取入参信息中的有效信息,根据有效信息和配置信息构造SQL,生成操作SQL。
在步骤S410至步骤S420中,程序运行时,当发生数据库操作的情况下,基于传入的类定义,验证合法性,即验证数据库的增加、删除、修改等操作是不是适用于查询类定义,在合法性验证通过的情况下,根据预设的入参要求获取入参信息中的有效信息,根据有效信息和配置信息构造SQL。通过本实施方式,在构建SQL之前对数据库操作传入的进行合法性验证,可以进一步提高ORM框架进行数据处理的效率。
在一个实施例中,图5是根据本发明实施例的ORM处理方法中生成操作SQL的流程图,如图5所示,根据配置信息和数据库操作指令构造SQL生成操作SQL包括以下步骤:
步骤S510,根据数据库操作指令获取数据源类型;
步骤S520,根据配置信息和数据库操作指令,通过与数据源类型对应的SQL进行SQL构造,生成操作SQL。
在步骤S510至步骤S520中,基于当前数据源类型调用对应的SQL构造语言,上述SQL构造语言包括不限于MYSQL、ORACLE、POSTGRESQL等。可选地,SQL构造语言包括可扩展,可以适配最新的数据库语法,从而提高ORM处理方法的兼容性,充分发挥数据库性能,并且能够进一步提高ORM的处理效率。
在一个实施例中,根据配置信息和数据库操作指令构造SQL生成操作SQL之后,还包括以下步骤:获取操作SQL,使用JDBC对操作SQL进行预编码和参数设置,并执行数据库操作。在本实施例中,ORM架构获取到需要执行的操作SQL后,使用Java数据库连接(JavaDatabase Connectivity,简称JDBC)用于执行SQL语句的Java应用程序接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。其预编码的过程包括注册驱动、获取与数据库的链接、创建代表SQL语句的对象、执行SQL语句等步骤,与数据库进行操作,获取结果信息。可选地,数据库操作的过程支持数据库连接池,支持数据库连接的复用。本实施方式能够进一步提高ORM框架的数据处理效率。
应该理解的是,虽然图1至图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1至图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,图6是根据本发明实施例中ORM处理系统的结构示意图,如图6所示,提供了一种ORM处理系统,包括配置解析器62和SQL构造器64:
配置解析器62用于基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;
SQL构造器64用于在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL。
关于ORM处理系统的具体限定可以参见上文中对于ORM处理方法的限定,在此不再赘述。上述ORM处理系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
上述ORM处理系统,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,降低了ORM配置的复杂性,提高了ORM数据处理的效率。
下面通过优选实施例对本申请实施例进行描述和说明。图7是根据本发明优选实施例中ORM框架的结构示意图,如图7所示,本发明提供的ORM框架包括数据库操作模块71、类定义模块72、配置解析器73、SQL构造器74、会话处理模块75、结果集构造器76和对象实例模块77:
类定义模块72中的定义分为两种,表映射和查询映射。表映射类对应数据库表,属性对应数据库表中的列定义,此设计和Hibernate是一致的。而查询映射是本发明独创的一种类映射,此映射类对应的是一段复杂查询SQL,类中的属性是查询返回的结果关系,同时类定义中基于静态方法块,注册了查询参数和SQL。
配置解析器73主要基于JAVA反射和静态代码块获取配置信息。程序运行时,会加载定义的类,然后触发静态代码块执行,在配置解析器中对类进行解析,将类与数据库表的映射关系,类与查询SQL的映射关系,存储到内存中。而配置信息主要有入参、出参、ID参数、表、SQL定义等。
SQL构造器74程序运行时,当发生数据库操作,如增删查改的情况下,基于传入的类定义,验证合法性。基于当前数据源类型调用对应的SQL构造器,针对不同的数据源调用不同的SQL构造器,包含不限于MYSQL、ORACLE、POSTGRESQL等,可选地,该SQL构造器为可扩展的SQL构造器,可以适配最新的数据库语法,充分发挥数据库性能。同时约束数据库操作的入参清单,必须使用约定的操作符。再通过NULL值判断约定,过滤掉NULL值的入参,从而可以支持动态查询条件。
会话处理模块75从SQL构造器中获取需要执行的SQL,使用JDBC进行SQL预编译和参数设置,与数据库进行操作,获取结果信息,会话处理默认支持数据库连接池,支持数据库连接的复用。
结果集构造器76对于增删改操作,简单封装JDBC返回的影响记录条数即可。对于查询操作,对于返回的结果列表,基于缓存的配置信息,进行对象实例化,并通过反射机制和类型转换处理,对对象的属性进行赋值操作。
对象实例模块77中的对象实例就是类的实例,和类定义一样,也是有表记录和查询记录之分。
上述ORM框架通过编写类(类分为表和查询两种),然后配置解析器基于JAVA反射和类加载时执行的静态代码块,得到配置信息,缓存在内存中。当发生数据库操作时,使用SQL构造器进行动态参数处理和SQL构建,通过会话处理,调用JDBC与数据库进行交互,然后再基于结果集构造器,将数据库存储的数据信息映射为对象实例。降低了ORM配置复杂性,并且能够支持复杂关联SQL,也能够支持复杂的动态查询。
在一个实施例中,提供了一种计算机设备,图8是根据本发明实施例中ORM处理计算机设备的示意图,如图8所示,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库中的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种ORM处理方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询SQL之间的映射关系;
在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
加载所述类定义,触发静态代码块执行;
根据所述静态代码块的执行结果以及java反射,确定所述配置信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取所述数据库操作指令中的入参信息;
根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据所述配置信息对所述入参信息进行类定义验证;
在所述类定义验证通过的情况下,根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据数据库操作指令获取数据源类型;
根据所述配置信息和所述数据库操作指令,通过与所述数据源类型对应的SQL进行SQL构造。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取所述类定义中的表映射;
根据所述表映射建立所述类与数据库表之间的映射关系。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取所述操作SQL,使用JDBC对所述操作SQL进行预编码,并执行数据库操作。
上述ORM处理计算机设备,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,降低了ORM配置的复杂性,提高了ORM数据处理的效率。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询SQL之间的映射关系;
在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
加载所述类定义,触发静态代码块执行;
根据所述静态代码块的执行结果以及java反射,确定所述配置信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取所述数据库操作指令中的入参信息;
根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据所述配置信息对所述入参信息进行类定义验证;
在所述类定义验证通过的情况下,根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据数据库操作指令获取数据源类型;
根据所述配置信息和所述数据库操作指令,通过与所述数据源类型对应的SQL进行SQL构造。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取所述类定义中的表映射;
根据所述表映射建立所述类与数据库表之间的映射关系。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取所述操作SQL,使用JDBC对所述操作SQL进行预编码,并执行数据库操作。
上述ORM处理计算机可读存储介质,基于预设的类定义确定配置信息,类定义包括查询映射,查询映射指示类与查询SQL之间的映射关系;在获取到数据库操作指令的情况下,根据配置信息和数据库操作指令构造SQL,生成操作SQL,降低了ORM配置的复杂性,提高了ORM数据处理的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种对象关系映射ORM处理方法,其特征在于,所述方法包括:
基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询结构化查询语言SQL之间的映射关系;
在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。
2.根据权利要求1所述的方法,其特征在于,所述基于预设的类定义确定配置信息包括:
加载所述类定义,触发静态代码块执行;
根据所述静态代码块的执行结果以及java反射,确定所述配置信息。
3.根据权利要求1所述的方法,其特征在于,所述根据所述配置信息和所述数据库操作指令构造SQL包括:
获取所述数据库操作指令中的入参信息;
根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL。
4.根据权利要求3所述的方法,其特征在于,所述获取所述数据库操作指令中的入参信息之后,所述方法包括:
根据所述配置信息对所述入参信息进行类定义验证;
在所述类定义验证通过的情况下,根据预设的入参要求获取所述入参信息中的有效信息,根据所述有效信息和所述配置信息构造SQL,生成操作SQL。
5.根据权利要求1所述的方法,其特征在于,所述根据所述配置信息和所述数据库操作指令构造SQL生成操作SQL包括:
根据数据库操作指令获取数据源类型;
根据所述配置信息和所述数据库操作指令,通过与所述数据源类型对应的SQL进行SQL构造,生成操作SQL。
6.根据权利要求1所述的方法,其特征在于,所述基于预设的类定义确定配置信息包括:
获取所述类定义中的表映射;
根据所述表映射建立所述类定义中的类与数据库表之间的映射关系。
7.根据权利要求1所述的方法,其特征在于,所述根据所述配置信息和所述数据库操作指令构造SQL生成操作SQL之后,所述方法包括:
获取所述操作SQL,使用java数据库连接JDBC对所述操作SQL进行预编码,并执行数据库操作。
8.一种ORM处理系统,其特征在于,所述系统包括配置解析器和SQL构造器:
所述配置解析器用于基于预设的类定义确定配置信息,所述类定义包括查询映射,所述查询映射指示类与查询SQL之间的映射关系;
所述SQL构造器用于在获取到数据库操作指令的情况下,根据所述配置信息和所述数据库操作指令构造SQL,生成操作SQL。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010656499.7A CN111966704A (zh) | 2020-07-09 | 2020-07-09 | Orm框架实现方法、系统、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010656499.7A CN111966704A (zh) | 2020-07-09 | 2020-07-09 | Orm框架实现方法、系统、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111966704A true CN111966704A (zh) | 2020-11-20 |
Family
ID=73361756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010656499.7A Pending CN111966704A (zh) | 2020-07-09 | 2020-07-09 | Orm框架实现方法、系统、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966704A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416465A (zh) * | 2020-11-30 | 2021-02-26 | 阳光保险集团股份有限公司 | 信息配置方法、装置、电子设备和存储介质 |
CN114519582A (zh) * | 2022-02-21 | 2022-05-20 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144696A1 (en) * | 2007-11-29 | 2009-06-04 | Max Rydahl Andersen | Code completion for object relational mapping query language (oql) queries |
CN102566990A (zh) * | 2010-12-09 | 2012-07-11 | 北大方正集团有限公司 | 一种在Java应用中进行数据操作的方法及装置 |
CN103677846A (zh) * | 2013-12-25 | 2014-03-26 | 拉卡拉支付有限公司 | 一种SQLite数据库开发工具包及开发方法 |
CN103870555A (zh) * | 2014-03-04 | 2014-06-18 | 赛特斯信息科技股份有限公司 | Spring data JPA实现动态查询的方法 |
CN106775770A (zh) * | 2017-01-16 | 2017-05-31 | 兴唐通信科技有限公司 | 基于类信息构建查询语句的查找方法 |
CN108304463A (zh) * | 2017-12-26 | 2018-07-20 | 中国广核电力股份有限公司 | 一种用于数据库的数据管理方法及其数据库应用组件 |
CN109240906A (zh) * | 2018-07-24 | 2019-01-18 | 平安科技(深圳)有限公司 | 数据库配置信息适配方法、装置、计算机设备和存储介质 |
CN109299332A (zh) * | 2018-11-02 | 2019-02-01 | 芜湖智久机器人有限公司 | 一种将类和数据库映射的方法、装置及存储介质 |
CN109669951A (zh) * | 2018-11-09 | 2019-04-23 | 金蝶软件(中国)有限公司 | 对象查询方法、装置、计算机设备和存储介质 |
-
2020
- 2020-07-09 CN CN202010656499.7A patent/CN111966704A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144696A1 (en) * | 2007-11-29 | 2009-06-04 | Max Rydahl Andersen | Code completion for object relational mapping query language (oql) queries |
CN102566990A (zh) * | 2010-12-09 | 2012-07-11 | 北大方正集团有限公司 | 一种在Java应用中进行数据操作的方法及装置 |
CN103677846A (zh) * | 2013-12-25 | 2014-03-26 | 拉卡拉支付有限公司 | 一种SQLite数据库开发工具包及开发方法 |
CN103870555A (zh) * | 2014-03-04 | 2014-06-18 | 赛特斯信息科技股份有限公司 | Spring data JPA实现动态查询的方法 |
CN106775770A (zh) * | 2017-01-16 | 2017-05-31 | 兴唐通信科技有限公司 | 基于类信息构建查询语句的查找方法 |
CN108304463A (zh) * | 2017-12-26 | 2018-07-20 | 中国广核电力股份有限公司 | 一种用于数据库的数据管理方法及其数据库应用组件 |
CN109240906A (zh) * | 2018-07-24 | 2019-01-18 | 平安科技(深圳)有限公司 | 数据库配置信息适配方法、装置、计算机设备和存储介质 |
CN109299332A (zh) * | 2018-11-02 | 2019-02-01 | 芜湖智久机器人有限公司 | 一种将类和数据库映射的方法、装置及存储介质 |
CN109669951A (zh) * | 2018-11-09 | 2019-04-23 | 金蝶软件(中国)有限公司 | 对象查询方法、装置、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416465A (zh) * | 2020-11-30 | 2021-02-26 | 阳光保险集团股份有限公司 | 信息配置方法、装置、电子设备和存储介质 |
CN114519582A (zh) * | 2022-02-21 | 2022-05-20 | 中国邮政储蓄银行股份有限公司 | 服务的预热方法、预热装置和服务系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN111177788A (zh) | Hive的动态脱敏方法及动态脱敏系统 | |
CN111309785A (zh) | 基于Spring框架的数据库访问方法、装置、计算机设备和介质 | |
CN111966704A (zh) | Orm框架实现方法、系统、计算机设备和存储介质 | |
WO2020052582A1 (zh) | 一种智能调用Dubbo远程服务的方法、装置、设备及介质 | |
CN111414379A (zh) | 序列号生成方法、装置、设备及计算机可读存储介质 | |
CN111443901B (zh) | 一种基于Java反射的业务扩展方法及装置 | |
CN111414350A (zh) | 一种服务生成方法及装置 | |
CN114238381A (zh) | 数据质量校验方法、设备及计算机可读存储介质 | |
CN110674205B (zh) | 单表查询方法、装置、终端及可读存储介质 | |
US10949179B1 (en) | Generating asynchronous runtime compatibility in JavaScript applications | |
CN107122203B (zh) | 一种配置文件的设置方法及装置 | |
CN110457013B (zh) | 程序组件配置装置及方法 | |
US20120124555A1 (en) | Optimization of Compiled Control Objects | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN104462605B (zh) | 一种数据库持久层框架配置、修改方法及系统 | |
CN105653334B (zh) | 一种基于saas模式的mis系统快速开发框架 | |
CN111881043A (zh) | 页面测试方法、装置、存储介质和处理器 | |
CN111259042A (zh) | 一种动态查询方法及系统 | |
CN116341007A (zh) | 一种数据查询方法、系统、设备及存储介质 | |
CN116126330A (zh) | 访问请求处理方法、装置、计算机设备和存储介质 | |
CN116185391A (zh) | 应用程序编程接口生成方法、装置、设备及存储介质 | |
CN113064584B (zh) | 幂等的实现方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210322 Address after: Room 406-10, building 2, ChuanHua Kechuang building, ningwei street, Xiaoshan District, Hangzhou, Zhejiang 311200 Applicant after: Hangzhou Ruijiang Technology Co.,Ltd. Address before: Room 201-56, Xiaoshan science and Technology City, building 1, ChuanHua Kechuang building, Xiaoshan District, Hangzhou, Zhejiang 311200 Applicant before: Hangzhou CHUANHUA Intelligent Manufacturing Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |