CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
ORM 与数据库设计/课时/Spring Data 家族
RawBlame
课时目录12 节

ORM 与数据库设计

  1. 01ORM 是什么
  2. 02范式与规范化
  3. 03ER 模型
  4. 04JPA 与 Hibernate
  5. 05MyBatis
  6. 06Spring Data 家族
  7. 07Schema 迁移
  8. 08N+1 与抓取策略
  9. 09MariaDB 与 MySQL
  10. 10ORM 与事务
  11. 11反模式
  12. 12综合练习

Spring Data 家族

JPA/Mongo/Redis 分工;sc-spring-data 衔接。

30 分钟

Spring Data 家族

Spring Data 不是单一项目,而是一组 Repository 抽象:JPA、MongoDB、Redis、Elasticsearch 等共享相似的 findByXxx 模式。

学习目标

  • 区分 Spring Data JPA / MongoDB / Redis 职责
  • 理解 CodeRoadMap「MySQL 主库 + 可选文档库」分工
  • 与 mongo-spring 对照

家族一览

模块存储典型注解本站角色
Spring Data JPAMySQL@Entity主数据 cf_*
Spring Data MongoDBMongoDB@Document日志、实验 collection
Spring Data RedisRedis@RedisHash缓存、会话(若启用)

关系型课程/进度 必须在 MySQL;Mongo 适合嵌套、写入频繁的辅助数据。

JPA Repository(主路径)

public interface LessonRepository extends JpaRepository<Lesson, Long> {

    List<Lesson> findByTrackIdAndStatus(Long trackId, String status);

    @Query("SELECT l FROM Lesson l JOIN FETCH l.track WHERE l.slug = :slug")
    Optional<Lesson> findWithTrackBySlug(@Param("slug") String slug);
}

JOIN FETCH 缓解 N+1,详见 orm-nplus1。

MongoDB Repository(附加)

@Document(collection = "lesson_edit_logs")
public class LessonEditLog {
    @Id private String id;
    private Long lessonId;
    private String diff;
}

public interface LessonEditLogRepository
        extends MongoRepository<LessonEditLog, String> {}

不要把 cf_lesson.content_md 整体迁到 Mongo 除非有明确产品需求——会破坏 sql-essentials 主线一致性。

配置共存

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/codeforge
  data:
    mongodb:
      uri: mongodb://127.0.0.1:27017/coderoadmap_lab

两套 Repository 包路径分开,Service 层明确调用哪条存储。

相关课程

  • sb-jpa
  • mongo-vs-sql
  • pg-spring
  • 练习

    • 列举三条适合 MySQL、三条适合 Mongo 的数据(本站语境)
    • 解释为何 JpaRepository 与 MongoRepository 不能混继承
    • 读 mongo-spring 的配置段

    小结

    Spring Data 用统一 Repository 风格对接多种存储;本站以 JPA+MySQL 为权威。 下一课讲 Schema 迁移。

    加载本节练习…
    ← 上一课MyBatis下一课 →Schema 迁移