ORM框架的发展,Hibernate、Mybatis框架会是终点吗,还能玩出哪些新花样

ORM框架的发展,Hibernate、Mybatis框架会是终点吗,还能玩出什么新花样

《天龙八部》开场,扛着音响出场的乔峰,霸气十足,我们以为这是全剧的武力天花板了,没想到最后出场的少林扫地僧,这才是真正的"王者",这才是真的战力天花板。

 

ORM框架,一端连着应用(application),一端连着数据库(database),当我们使用spring-jdbc,JdbcTemplate已经能完成‘所有’数据库相关操作的时候,以为这就是数据库访问操作的天花板了,也没想过ORM框架,没想到hibernate、mybatis这种框架的出现,xx限制了我们的想象力, oka,让我们看看ORM框架的'发展历程',为什么会出现ORM框架,以及ORM框架的好处在哪里,未来又将如何发展...

 

1. 最简单的直连方式

应用每次访问数据库,都需要建立连接,访问数据库,断开连接

>> 建立连接,断开连接 代码都是重复、冗余

 

2. 访问数据库方法,提抽出一个公共类

数据库建立连接,断开连接,代码冗余,抽提到一个公共类中,DBUtils类中

>> 问题: 数据库连接是宝贵的资源,应该用池化

 

 

3. 用到了自定义的数据库连接池

通过数据库连接池,解决了连接重复建立、断开的过程

>> 问题:ConnectionPool 是自己写的,有bug,不稳定,扩展性低,性能低

(实现DataSource接口就可以拥有自己的数据库连接池)

 

 

4. 用到了第三方开源的数据库连接池

 上面的ConnectionPool是自己写的连接池,市面上有开源的,更稳定,性能更优的ConnectionPool,引入市面上知名的连接池

>> 问题: 每次query操作,需要手动将ResultSet中的数据组装成POJO对象,代码重复、冗余

 

5. 使用spring-jdbc简化了query操作

每次query操作,我们可以自己包装,提供公共类-实现ResultSet到POJO对象的转换,但是市面上有spring-jdbc包,通过RowMapper接口(或者通过BeanPropertyRowMapper)来简化转换过程。使用jdbcTemplate工具

>> 问题: 查询没有用到缓存,我们希望有缓存;以及批量插入操作,存储过程的执行等问题

 

 

6. 使用了spring-context 解决缓存的问题,可以使用缓存了

spring-context 包中有@Cacheable注解、我们可以提供CacheManager实现类来实现缓存数据操作,但需要在每个查询方法上加上@Cacheable注解

>>问题: 缓存数据管理、失效时间、数据不一致也都引入的问题

 

 

7. ORM框架的出现,提供了整体的OR关系解决方案

在mybatis 这种ORM框架使用之前,JdbcTemplate这些都只能算做工具,用来解决特定的单个问题,需要什么就引入什么工具。

而使用了Mybatis后,数据库连接池、CRUD的操作、批量操作、缓存、事务等问题都提供了整体解决方案,面向OR关系的思考,提供的彻底解决方案

 

8. ORM框架未来会如何发展

ORM框架,Hibernate、Mybatis已经是天花板了,但两者还在更新,不知道未来还会完成什么新花样

更新:

a. jdk的更新,所以也会有对应的升级;

b. jpa规范的升级,hibernate对应也在升级;

c. 数据库厂商对应的数据库升级,两者也会跟着升级;

d. 未来不知道会不会针对NOSQL数据库的支持,感觉希望不大;

e. 性能升级;

f. 框架架构调整,架构升级;

... ...

 

9. hibernate的最近更新  http://hibernate.org/

 

hibernate 除了作为ORM框架,还有实现了jsr规范中的Validator,Reactive的支持,NOSQL的支持 等等

 

10. mybatis的最近更新 https://mybatis.org/

 


 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值