【技术实现步骤摘要】
一种基于Java注解进行数据路由的方法和装置
本专利技术涉及数据查询和操作领域,尤其涉及一种基于Java注解进行数据路由的方法和装置。
技术介绍
随着业务的增长,关系数据库(MySQL/Oracle等)的表里存储的数据量越来越大,当数据量大到一定的程度后MySq1单表800w以上,Oracle单表3000w-5000w以上),就会出现复杂查询或变更操作的性能问题。针对这种情况,一般的处理方式都是对数据进行分库拆分。目前,主流的分库分表方案是采用数据库Proxy中间件,数据库Proxy中间件会通过解析SQL语句进行数据路由,但是功能强大的数据库Proxy中间件,普遍在架构上较为复杂,需要团队有较高的运维能力,也需要对开发人员编写的SQL进行一定的限制,对于一些需要对数据进行分片处理,但是业务/团队规模较小的应用并不友好,搭建一整套数据库Proxy中间件的代价较大,不适用于小规模团队。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足,提供一种基于Java注解进行数据路由的方法和装置。本 ...
【技术保护点】
1.一种基于Java注解进行数据路由的方法,其特征在于,包括:/nS1,在Java类的目标对象方法上创建路由注解;/nS2,为创建路由注解后的所述目标对象方法生成对应的Proxy代理类,并动态加载到JVM中,生成Proxy代理对象;/nS3,所述Proxy代理对象拦截方法调用请求,解析所述路由注解,获得所述请求的入参参数和所述路由注解携带的e1表达式;/nS4,通过所述路由注解上的e1表达式计算入参参数获得数据库连接信息;/nS5,调用所述目标对象方法,结合所述数据库连接信息,操作目标数据库。/n
【技术特征摘要】
1.一种基于Java注解进行数据路由的方法,其特征在于,包括:
S1,在Java类的目标对象方法上创建路由注解;
S2,为创建路由注解后的所述目标对象方法生成对应的Proxy代理类,并动态加载到JVM中,生成Proxy代理对象;
S3,所述Proxy代理对象拦截方法调用请求,解析所述路由注解,获得所述请求的入参参数和所述路由注解携带的e1表达式;
S4,通过所述路由注解上的e1表达式计算入参参数获得数据库连接信息;
S5,调用所述目标对象方法,结合所述数据库连接信息,操作目标数据库。
2.根据权利要求1所述的一种基于Java注解进行数据路由的方法,其特征在于,所述S3具体包括:所述Proxy代理对象拦截方法调用请求,通过Java反射技术解析所述路由注解,获得所述请求的入参参数和所述路由注解携带的e1表达式。
3.根据权利要求2所述的一种基于Java注解进行数据路由的方法,其特征在于,所述S4具体包括:根据所述入参参数和所述e1表达式计算得出路由的目标数据源;
从所述目标数据源中获取对应数据库连接信息。
4.根据权利要求3所述的一种基于Java注解进行数据路由的方法,其特征在于,所述S5具体包括:调用所述目标对象方法,并传入所述数据库连接信息;
在目标对象中,使用所述对应数据库连接信息与所述数据库建立连接,并执行SQL语句对所述数据库进行操作。
5.根据权利要求1-4任一项所述的一种基于Java注解进行数据路由的方法,其特征在于,所述方法还包括:当所述目标对象方法不包含路由注解,则调用所述目标对象方法,使用默认数据库连接信息与默认数据库建立连接,并执行SQL语句对所述默认数据库进行操作。
6.一种基于Java注解进行数据路由的装置,其特征在于...
【专利技术属性】
技术研发人员:张少峰,
申请(专利权)人:北京思特奇信息技术股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。