前言
近期自己构建了一个java springboot项目,数据库读写环节,我陷入了沉思。java读写数据库我是使用jpa呢?还是mybatis呢?
求道
1、回顾历史:
- 原始时代:jdbc时代,自己构建Connection,Statement,读取ResultSet。
- SSH时代:ssh黄金组合,Hibernate ORM风靡,各种One to many,many to many及一二级缓存搞晕了,使用简单,深入了解还是有些门槛。
- Mybatis: 一款优秀的持久层框架,可通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、上下求索
- 早期直接jdbc,简单直接,没有什么连接池,程序员自己管理。软件的复用性太差。
- 后来用了hibernate,很容易上手,对于复杂的场景配置起来比较麻烦。门槛高,执行效率低。
- 再后来,接触了mybatis,通过xml配置,只要会sql就可以搞定,有点小惊喜。门槛低,自己编写xml太繁琐。
- 再后来,接触了jpa,太他妈简单了,自动创建表,通过规则自动创建查询或更新语句,也可通过SQL进行扩展。简洁,国外广泛使用,执行效率低一些。
- 再后来,接触了mybatis-generator可以生成通用的mybatis的xml语句。阿里内部有个Aligenerator对其进行了扩展,可以对复杂的查询封装了Criteria。所幸找到了与其类似的IDEA插件better-mybatis-generator,每个表对于一个*Example,也是封装了Criteria对象。
涅槃
兜兜转转10多年开发,jdbc已经是过去式了;jpa很简洁,数据量大的时候,担心其效率问题(可能通过其他高级语法来解决),未深入研究;mybatis是我最喜欢的方式,也可能跟某段公司经历有关系吧,且通过better-mybatis-generator插件完美了把低门槛和高复用结合起来,那就别纠结了,就它了,挺好。
以上就是我对ORM的选型心励路程,mybatis+better-mybatis-generator,你是否有更好选择推荐。