03.ORM

ORM

前面我们介绍了 Spring Boot 中最基本的 Jdbc 模块来实现关系型数据库的数据读写操作。然而当我们有一定的开发经验之后,不难发现,在实际开发过程中,对数据库的操作大多可以归结为:“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句几乎都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑。

在 Hibernate 的帮助下,Java 实体映射到数据库表数据完成之后,再进一步解决抽象各个 Java 实体基本的“增删改查”操作,我们通常会以泛型的方式封装一个模板 Dao 来进行抽象简化,但是这样依然不是很方便,我们需要针对每个实体编写一个继承自泛型模板 Dao 的接口,再编写该接口的实现。虽然一些基础的数据访问已经可以得到很好的复用,但是在代码结构上针对每个实体都会有一堆 Dao 的接口和实现。由于模板 Dao 的实现,使得这些具体实体的 Dao 层已经变的非常“薄”,有一些具体实体的 Dao 实现可能完全就是对模板 Dao 的简单代理,并且往往这样的实现类可能会出现在很多实体上。