如何“修改”底层框架源码中的某些功能
2017-07-14 11:45
399 查看
背景:
公司项目中所有实体的id全部是通过数据库自增的方式设置的,这样当数据量很庞大的时候,就会出现录入数据超级慢的问题,因为数据库要遍历整个表的数据,获取到最大id才能插入一条数据。
提出解决方案:
新建一个ids表专门存储每张表的最大id和表名字,这样,当向某个表中插入数据的时候,先在ids表中查一下这个表对应的最大id,这样就不用遍历整个表了。
开始开发:
因为项目中已经写死,插入数据库数据全部用的是自增。让在每个插入数据的代码中加查询ids表实在是个不可取的方法,工作量可想而知。
因为我们插入数据的时候全部用的是bugumongo框架(当然如果你们的是MySQL数据库的话,是其他框架咯),先用反编译软件查看保存数据库数据的源代码。
查看源码。导出源码包
eclipse关联源码包
修改源码的方式,可以直接利用反编译软件得到源码包,然后修改源码,重新生成自己的jar,替换原来的jar包就可以了。(当这个过程有点繁琐)
这里采用重写获取最大id的方法。只要保证包名和源码中的完全一致就行。
这样就大功告成了。
当然有人可能会说用spring aop的方式加前置通知来实现这个功能。(大部分项目中这也是可以的,但这个方式有局限性。)
如有不懂的地方请联系本人qq:1913284695
公司项目中所有实体的id全部是通过数据库自增的方式设置的,这样当数据量很庞大的时候,就会出现录入数据超级慢的问题,因为数据库要遍历整个表的数据,获取到最大id才能插入一条数据。
提出解决方案:
新建一个ids表专门存储每张表的最大id和表名字,这样,当向某个表中插入数据的时候,先在ids表中查一下这个表对应的最大id,这样就不用遍历整个表了。
开始开发:
因为项目中已经写死,插入数据库数据全部用的是自增。让在每个插入数据的代码中加查询ids表实在是个不可取的方法,工作量可想而知。
因为我们插入数据的时候全部用的是bugumongo框架(当然如果你们的是MySQL数据库的话,是其他框架咯),先用反编译软件查看保存数据库数据的源代码。
查看源码。导出源码包
eclipse关联源码包
修改源码的方式,可以直接利用反编译软件得到源码包,然后修改源码,重新生成自己的jar,替换原来的jar包就可以了。(当这个过程有点繁琐)
这里采用重写获取最大id的方法。只要保证包名和源码中的完全一致就行。
这样就大功告成了。
当然有人可能会说用spring aop的方式加前置通知来实现这个功能。(大部分项目中这也是可以的,但这个方式有局限性。)
如有不懂的地方请联系本人qq:1913284695
相关文章推荐
- ci框架,分页类,不修改核心源码的情况下,伪静态如何处理
- AFNetworking3.1.0源码分析(一)整体框架和功能模块
- android 修改源码framework后如何编译
- Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现
- 构建NetCore应用框架之实战篇(五):BitAdminCore框架1.0登录功能设计实现及源码
- jQuery源码分析:如何解决jQuery、$关键字与其它脚本框架的冲突问题?
- QT中如何实现XML文件的创建、增加、修改、删除功能。
- 【远程调用框架】如何实现一个简单的RPC框架(四)优化二:改变底层通信框架
- [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码
- SSM框架----修改mybatis-generate源码实现实体类加上字段注释
- NIO框架之MINA源码解析(三):底层通信与责任链模式应用
- 微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
- Android 源码中修改某些文件的时间戳方法
- jquery ui 的 menu 和 tabs 一起使用,menu的子菜单被挡住,有源码,官方的就这样,该如何修改呢
- 修改CAS框架源码实现多字段认证单点登录
- iOS网络框架AFNetworking3.1.0底层源码解读
- View视图框架源码分析之一:android是如何创建一个view
- 如何快速了解源码框架
- Android6.0如何将Super SU的root权限管理功能集成到系统源码里面
- TP框架笔记 -- 391-module功能及源码剖析(1)