天天看点

Spring Data 数据库建模最佳实践

本文节选自电子书《Netkiller Architect 手札》

出处:http://www.netkiller.cn

作者:netkiller , QQ:13721218, 订阅号:netkiller-ebook

目录

<dl></dl>

ORM的出现解决了程序猿学习数据库学历成本,也加快了开发的速度。程序猿无需再学习数据库定义语言DDL以及数据库客户端,也无需关注建表这些繁琐的工作,同时也降低了数据库结构变更管理中与DBA频繁沟通的成本。

在过去的两年中我们采用 Spring Data JPA 定义数据库,访问数据库,积累了很多经验,最终我们发现使用 Spring Data 实体定义完全可以代替 DBA 的建模工作。

这是一个通用分类表,常见的父子关系加上path路径

期望结果

我们希望为 name 和 path 字段增加普通索引

创建由多个字段组成的复合索引,如: "member_id", "articleId"

如下图,我们将实现 categroy 和 article 的一对多关系

首先定义分类实体类

定义文章实体类

希望结果

现在我们已经将 categroy 与 article 两张表一对多关系建立起来。

用户与角色就是一个多对多的关系,多对多是需要中间表做关联的。所以需要一个 user_has_role 表。

创建 User 表

创建 Role 表

最终产生数据库表如下

orphanRemoval = true 可以实现数据级联删除

<a href="https://yq.aliyun.com/articles/292290" target="_blank">找到并留住最佳员工</a>

<a href="https://yq.aliyun.com/articles/281143" target="_blank">让程序猿和攻城狮更敬业</a>

<a href="https://yq.aliyun.com/articles/292610?spm=5176.8091938.0.0.jGbvd1" target="_blank">攻城狮的自我营销</a>

<a href="https://yq.aliyun.com/articles/293697" target="_blank">人力资源管理·培训与开发</a>