原标题:为啥微服务-数据库CRUD推荐使用JDBI开源框架之我见
点击上方 “公众号”可以订阅哦!
最近有幸参与PaaS微服务的开发,对于平台推荐 数据库CRUD操作采用JDBI来实现的原因,个人愚见如下,供参考:
JDBI简介
JDBI是一个基于JDBC构建的便利库,尝试使用集合,beans 等等来暴露操作 Java 中的关系型数据库。JDBI提供两个不同操作样式的 APIs:fluent 和 sql object。
Maven 仓库地址:
JDBI和ORM技术比较
为啥我司的微服务中的数据库操作不采用ORM框架呢?纳尼?我咋不懂呢。。。。
ORM
ORM的任务就是将关系型数据库中的数据通过ORM层映射为对象,使之能够应用于面向对象程序,方便编程。ORM 确实为大多数程序员提供了便利。
目前较为流行的ORM开源框架有hibernate、spring data jpa和mybatis,其中hibernate和spring data jpa高级别的ORM框架,完全实现了关系数据库到程序对象的映射;而mybatis是一个低级别的ORM框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。
ORM优点:
1、程序员不需要再动手写SQL语句,或者说大部分情况下不需要动手写,只需要调用一系列函数即可完成数据库CURD操作。
2、对不同数据库管理系统的连接以及操作进行了抽象,程序员完全可以不考虑使用的是什么数据库以及数据库的版本。
总之,在中小型的项目开发中,ORM的确为我们带来了高效的开发效率。
ORM缺点:
当然ORM存在一定弊端以及它对数据库性能的影响。
1、对于复杂的SQL有心无力。
2、无法完全屏蔽数据库底层细节(这也将是下面讨论的),开发人员仍然要熟悉数据库底层操作。
3、关系-对象映射的实现是以性能为代价,方便了开发,牺牲了效率。
4、多余的工作:大多数ORM框架为了达到屏蔽某些细节问题或者对数据库进行抽象,做了很多额外的工作,而这些工作对于大多数人来说是不需要的,这样做不仅仅降低了性能,同时也改变了数据本身的意义,对数据造成了污染。
JDBI的优势
ORM存在诸多优点,其屏蔽了数据库的CURD细节,程序员大多数情况下不需要再编写SQL语句,在一个小型的网站中,这样基本是没有什么问题的。即使效率低下,如今的硬件水平也可以弥补软件本身的性能问题。但如果在大型项目中盲目的使用ORM,定会造成性能的低下,因此ORM仅适用于中小型项目开发,不适用于大型项目开发。
JDBI提供了JDBC更高层次的抽象,使得数据库操作更为便捷、开发更为高效,同时又不会影响产品性能,因此JDBI更适用于大型项目开发。
以下摘自JDBI 论坛部分内容,可供参考:
责任编辑: