Enterprise 中级

声明 Repository 接口,让 Jakarta Data 生成 DAO 实现。

✕ Jakarta EE 8+
@PersistenceContext
EntityManager em;

public User findById(Long id) {
    return em.find(User.class, id);
}

public List<User> findByName(String name) {
    return em.createQuery(
        "SELECT u FROM User u WHERE u.name = :name",
        User.class)
        .setParameter("name", name)
        .getResultList();
}

public void save(User user) {
    em.persist(user);
}
✓ Jakarta EE 11+
@Repository
public interface Users extends CrudRepository<User, Long> {
    List<User> findByName(String name);
}
发现此代码有问题? 告诉我们。
🪄

零样板代码

声明接口;容器生成完整的 DAO 实现。

📖

表达性查询

方法名成为查询:findByLastNameOrderByFirstName。

🔒

类型安全

方法签名在编译时验证参数和返回类型。

旧方式
JPA EntityManager
现代方式
Jakarta Data Repository
自 JDK
21
难度
中级
JPA 与 Jakarta Data
可用

自 Jakarta EE 11 / Java 21 起可用(2024 年)

Jakarta Data(Jakarta EE 11)将数据访问变为纯接口声明。容器生成完整的 DAO 实现——无需 EntityManager 样板、查询构建器或手动事务。

分享 𝕏 🦋 in