Micronaut 本身不强迫你只能用一种数据访问方式,但它给出了比较顺的官方路线。
常见组合包括:
- Micronaut Data JDBC
- Micronaut Data JPA
- Micronaut Data R2DBC
- Micronaut Data MongoDB
- Repository 模式
- 编译期查询建模
一个典型 Repository:
package example;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.repository.CrudRepository;
@Repository
public interface PermitRepository extends CrudRepository<PermitEntity, Long> {
}实体:
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;
}
}服务层使用:
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 也尽量走编译期建模和生成能力,让运行时少做动态推断。
这很像侦察营调档案:
不是每次去仓库口头描述“帮我找一下那个表”
而是提前把档案目录、索引、调阅规则整理好