我正在通过 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/