美文网首页
实战篇-仓储技术选型

实战篇-仓储技术选型

作者: jimmyz81 | 来源:发表于2022-04-11 11:23 被阅读0次

仓储层是为了持久化数据,数据如何保存与存储介质息息相关,跟领域不是一对一关系。
一个领域对象,可以使用关系型数据库存储,也可以使用NoSql存储,甚至可以使用文件存储。
一个领域对象,可以保存在一个表中,可以保存在的多个表中,多个领域对象可以保存在一个表中。

领域对象是为了业务操作更合理,是纯内存操作,可能需要面对对象的方式更适合;仓储是为了查询,保存更合理,是IO操作,可能面向关系更适合。两种层次不同,使用成本不同,关注点不同。领域对象不应该依赖具体仓储实现,应该依赖于仓储接口。

flower-repository
领域仓储接口,主要定义接口,一般在domain层,无任何依赖。
flower-repository-mybatis
领域仓储mybatis实现,依赖mybatis,domain层,可以使用mybatis的相关技术,无限制。
flower-repository-jpa
领域仓储jpa实现,依赖spring boot jpa,domain层,可以使用jpa的相关技术,无限制。

MyBatis和JPA怎么选

各有特点

JPA:抽象层次高,适用于面向对象编程和DDD,一套语言走天下,数据库移植性好(伪需求),增删改查很方便,复杂查询支持差,学习难度大,技术要求高,sql语句难优化
MyBatis:上手容易,学习成本低,灵活性高,面向数据库编程,依赖数据库,需要面向XML和SQL编程,需要写大量模板SQL。

选型考虑
1. 成本考虑:国内环境,mybatis是主流,加上学习成本低,很容易上手和招人。JPA需要有较高的面向对象的设计和相对稳定的需求。
2. 性能考虑:小项目,随便选,那个简单,那个熟练用哪个,高并发项目需要慎重,不是JPA不适合高并发,是能掌握JPA的大神太少。

Mybatis 和 JPA 用哪个好? 优缺点 ?_FH-Admin的博客-CSDN博客_jpa和mybatis哪个好
Mybatis与Spring Data Jpa怎么选? - 掘金 (juejin.cn)

更好的搭档

MyBatis+mybatis-mapper
增删改查直接使用,复杂查询使用mapper,即可以省去编写大量模板SQL,又可以灵活控制复杂查询,支持自定义基类方法,支持JPA,完美!!

- 不选择MyBatis-Plus(github 12.7k):MyBatis-Plus名气更大,也非常好用,功能强大,支持乐观锁,多租户等,唯一的问题就是不支持JPA注解,本项目本着最小依赖的原则,domain层不依赖其他框架,只能选择JPA注解。
- 选择MyBatis-Mapper(tk-mybatis的新作):可以自定义方法,可以轻松扩展,支持JPA,喜欢的人自然喜欢,无关优劣。

JPA+Fenix
简单操作使用JPA,复杂,动态SQL使用Fenix,完美!!
Fenix,为解决复杂动态SQL而生的Spring Data JPA扩展库

更多选择

数据库存储方案选择后很难改变,所以多仓储实现意义不大,此方案仅作为依赖隔离示例。

数据库还是有选择的余地的,目前分布式数据百花齐放,很多协议都是兼容的:
PolarDB,100%兼容MySQL 5.6/5.7/8.0,PostgreSQL 11,高度兼容Oracle
TiDB,兼容 MySQL 5.7 协议和 MySQL 生态

关于分库分表方案:
Sharding-JDBC,增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架
Mycat,Java语言编写的MySQL数据库网络协议的开源中间件


SpringBoot入门系列

实战篇-项目架构,原则和分层
实战篇-基础设施,基类与配置
实战篇-接口实现,配置和部署
实战篇-仓储技术选型
实战篇-工具类实战

相关文章

  • 爬虫(3-1 3-2)

    3-1 爬虫技术选型,爬虫能做什么?技术选型:scrapy vs requests+beautifulsoup1....

  • 技术选型指南

    这是一篇综合类技术选型指南,试图为你提供一份比较通用的技术选型思维框架。当你需要进行技术选型时,可以参照它来设计自...

  • 伴鱼数据库选型的思考,为什么我们 all in TiDB

    作者:伴鱼技术团队 技术选型是由技术方向和业务场景 trade-off 决定的,脱离业务场景来说技术选型是没有任何...

  • Metal基础入门

    一、背景和技术选型 关于技术方案的选型,最权威的肯定是Metal for OpenGL Developers[ht...

  • 通过阿里云maxcompute快速构建数据仓库

    前期技术选型 技术选型确定 鉴于开发资源,以及尚无大数据的技术基础,选用了可以快速上手的阿里云maxcompute...

  • 技术选型

    一、构建工具 gulp 任务管理,对任务文件流式操作,内存中完成,效率高 grunt 任务管理,对任务文件先读...

  • 技术选型

    介绍后台管理系统常见的组合搭配。主要是从业务逻辑层的实现和视图层考虑。 1:Angular+Bootstrap 市...

  • 技术选型

    scrapy vs requests+beaufigulsoup scrapy 是框架 (强大)requests+...

  • 技术选型

    2、前端 动态页签:Jerichotab,jquery-1.12.4.min.jsCSS框架:element-ui...

  • 技术选型

    总结 原则利于简化开发,提高开发效率利于后期扩展、维护利于公司技术积累利于建立公司开发流程 资源资源指与项目相关、...

网友评论

      本文标题:实战篇-仓储技术选型

      本文链接:https://www.haomeiwen.com/subject/itdssrtx.html