jfinal项目在项目启动时,会动态读取数据库表结构,观察源代码主要获取了字段名称与类型,这部分动作占用启动时间80%以上,且在实际环境中数据库几乎不会发生变化,每次启动读取意义不大,若能进行优化,将大幅提高jfinal项目启动速度,体验更好,做到更加极致。
比如在下一个版本中,提供两种实现方式,使用惯用的factory:
1、基于jdbc读取(现方案);
2、基于文件(类似于表主键_MappingKit的方式,基于代码生成,一次生成终生受用,可能会牺牲db操作时对字段的实时检查,如setXXX()等,但是数据库本身会对sql进行检测);
将1作为下个版本的默认实现,将2作为可选方案,若改进后大家觉得2方案更实用,再将来的版本中可以考虑将2作为默认实现,平滑过渡且不影响原始jfinal用户的升级体验。
项目有一百多个表,这一步操作导致了项目需要三十多秒启动时间,而且sql打印了一大堆 select * from t_my_table where 1 = 2 的东西,致使强迫症患者险些入院治疗
仅此建议~纯属乱说~有错勿怪
致敬
当前架构下,_MappingKit.java 已经有了,只需要在 MappingKitGenerator 中添加生成 model 到 table 的映射即可,只是再向前多走一步而已
_MappingKit.java 中多生成一个方法,向 TableMapping 中 put 进映射关系即可
这个建议十分合理,因为如果你 Model、BaseModel 都是生成的,那么已然将映射关系交给了生成器,进一步将 model 到 table 字段的映射也交给生成器也十分合理
赞