gpt4 book ai didi

java - 使用 Spring Data JPA 的服务层中的 Crud 方法

转载 作者:行者123 更新时间:2023-12-04 11:34:32 24 4
gpt4 key购买 nike

我正在使用 Spring 和 Spring Data JPA 构建一个小型应用程序,我需要在服务层使用 CrudRepository 方法,所以我创建了 2 个类:GenericService 和 GenericServiceImpl。但我不知道这是否是正确的,甚至是最好的方法。

下面是一个例子:

POJO:

@Entity
public class User {

@Id
private Long id;

private String username;
}

道:
public interface UserDAO extends CrudRepository<User, Long> {
User findOneByUsername(String username);
}

通用服务
public interface GenericService<T, ID extends Serializable> {
<S extends T> S save(S entity);
}

服务
public interface UserService extends GenericService<User, Long>  {
User findOneByUsername(String username);
}

通用服务实现。
public class GenericServiceImpl<T, ID extends Serializable> implements GenericService<T, ID> {

@Autowired
private CrudRepository<T, ID> repository;

@Override
public <S extends T> S save(S entity) {
return repository.save(entity);
}
}

服务实现
@Service
@Transactional
public class UserServiceImpl extends GenericServiceImpl<User, Long> implements UserService {

@Autowired
private UserDAO userDAO;

@Override
public User findOneByUsername(String username) {
userDAO.findOneByUsername(username);
}
}

最佳答案

是的,您正在提供自己的 impl,它可以执行自定义操作,同时仍然重用 Spring JPA 的 CrudRepository 中的派生查询。我已经看到很多了。 :) 如果我们想在调用派生方法之前进行我们自己的计算,我们需要这样做。毕竟,该计算很可能是存储库的一部分,因此将该逻辑放入服务中是没有意义的。但在您的场景中,如果没有此类自定义计算,则不需要此间接。正如评论者提到的,您应该直接使用 UserDao 接口(interface)。 :)

关于java - 使用 Spring Data JPA 的服务层中的 Crud 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com