java - DAO 在 Spring JPA 中是一个好的实践吗?

标签 java spring spring-boot

我正在通过 Udemy 的教程学习 Spring,但作者使用 Spring Boot 1.5.6,我有点不确定他在做什么。在 JPA 示例中,他创建了一个 Client 实体 (Serialized),然后创建了一个 ClientDAO 接口(interface)及其实现。实现如下所示:

@Repository
public class ClientDaoImpl implements IClientDao {
    @PersistenceContext
    private EntityManager em;

    @Transactional(readOnly=true)
    @Override
    public List<Client> findAll() {
        return em.createQuery("from Client").getResultList();
    }
}

这样做是一个好的做法吗?我之前看过一个视频,其中作者使用 CrudRepository 并在没有实现任何内容的情况下创建了一个服务,更不用说使用这种 SQL 了。这是因为它是 Spring Boot 的过时版本还是这是一个好方法?这看起来很像旧的 JavaEE,而不是 Spring 5。我应该忽略它并使用 CrudRepository 和服务来完成它吗?

谢谢。

最佳答案

如果您可以使用尽可能少的代码来实现该服务,这始终是一个很好的做法。所以如果我们能通过只声明接口(interface)来创建DAO服务,那就更好了,官方文档推荐为spring DATA .

interface ClientDao extends CrudRepository<Cliente, Long> {
}

但是,出于学习的目的,最好用旧方法进行练习以了解其工作原理。

关于java - DAO 在 Spring JPA 中是一个好的实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848562/

相关文章:

spring - Kotlin - SpringApplicationBuilder 中的扩展运算符

java - Spring 的@Cacheable 注释是否可以与注释方法的 bean 具有相同的范围?

java - 在 Spring batch 中查询批处理作业元数据

java - 仅针对内容类型 x-www-form-urlencoded 接受 Spring + Spring Security 请求

java - 维护使用 wsimport 构建的 Web 服务

java - Wicket - 刷新每个请求的组件(实现 session 超时倒计时)

java - 如何在启用 SSL 的 Spring Boot 应用程序中连接到 RDS postgres

java - 设置 Spring 安全性以在未通过身份验证的情况下将用户重定向到登录页面

java - Java 中的 GetDriveType() 等效项

java - 获取进程的 PID 以在不知道其全名的情况下将其杀死