全书目录

第四十六篇:Micronaut 完全指南 —— 编译期轻装侦察营宇宙

第九章:数据访问 —— 档案库不是手抄本,要有标准调阅路线

1 分钟 274 字 第 857 / 962 个阅读单元

Micronaut 本身不强迫你只能用一种数据访问方式,但它给出了比较顺的官方路线。

常见组合包括:

  • Micronaut Data JDBC
  • Micronaut Data JPA
  • Micronaut Data R2DBC
  • Micronaut Data MongoDB
  • Repository 模式
  • 编译期查询建模

一个典型 Repository:

java
package example;

import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;

@Repository
public interface PermitRepository extends CrudRepository<PermitEntity, Long> {
}

实体:

java
package example;

import io.micronaut.serde.annotation.Serdeable;
import jakarta.persistence.*;

@Entity
@Table(name = "permits")
@Serdeable
public class PermitEntity {

    @Id
    @GeneratedValue
    private Long id;

    private String name;
    private String status;

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

服务层使用:

java
package example;

import jakarta.inject.Singleton;

@Singleton
public class PermitService {

    private final PermitRepository permitRepository;

    public PermitService(PermitRepository permitRepository) {
        this.permitRepository = permitRepository;
    }

    public PermitEntity save(String name) {
        PermitEntity entity = new PermitEntity();
        entity.setName(name);
        entity.setStatus("draft");
        return permitRepository.save(entity);
    }
}

这里的重点不是“Micronaut 也有 Repository”。

而是:

Micronaut Data 也尽量走编译期建模和生成能力,让运行时少做动态推断。

这很像侦察营调档案:

text
不是每次去仓库口头描述“帮我找一下那个表”
而是提前把档案目录、索引、调阅规则整理好