最近公司在重新梳理架构,计划将现有的软件进行重构。在技术选项上产生了一些差异,我建议选型Spring JPA(基于Hibernate)。同事建议在代码中嵌入SQL类似于MyBits。公司现有项目并发性不是很强,也不是互联网应用产品,是在局域网里运行的特殊软件产品。
争议点
同事认为JPA 批量处理数量效率低,无法对SQL进行深度优化,形成的SQL为黑洞不可预见,且无法应对多变的数据库结构复杂查询等问题。
但我认为JPA可以通过批量操作、缓存、异步等操作应对批量数据的处理;至于SQL优化由于程序员的水平参差不齐,写的SQL语句也是各种各样,不排除有大神写着查询效率极高的复杂SQL语句,但也不能排除其他情况,还有就是水平平相对,但使用JPA也极大的提高了代码编写效率;SQL黑洞也可以以日志的方式呈现进行监控;至于数据多变查询复杂,我则认为是数据库表设计不合理导致的问题,没有遵循三范式等一些设计原则,可通过视图进行解决。
JPA是应用业务模型进行编程思考,直接SQL语句是对数据库模型进行思考。由于之前对JPA以及Hibernate了解也并不是很深入,后面会通过该专栏,通过官方文档进行深度学习与优化,帮助喜欢JPA的同学深入的了解JPA,以及更好的应用JPA。我也知道现在国内是Mybits的天下,但我仍然认为JPA前景光明。