gpt4 book ai didi

java - Java Spring Boot如何实现Business Logic层和Repository层?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:27 29 4
gpt4 key购买 nike

我正在尝试为我的应用程序创建业务逻辑(服务)和存储库(数据访问)层。我想正确地做,但我不是专家。

目前,对于 Repository 层,我创建了一个扩展 JpaRepository 的接口(interface) IMainDao:

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface IMainDao extends JpaRepository<Object, Integer>{
}

所以我所有的存储库接口(interface)都可以扩展 IMainDao:

import org.springframework.stereotype.Repository;

@Repository
public interface IUserDao extends IMainDao{

}

我还创建了业务逻辑层。接口(interface)IMainService:

import java.util.List;
import org.springframework.stereotype.Service;

@Service
public interface IMainService {

Object getById(int id);
List<Object> getAll();
Object create(Object o);
Object update(Object o);
void delete(int id);
}

这个接口(interface)MainService的实现

@Service
public class MainService implements IMainService{

@Autowired
private IMainDao mainDao;

@Override
public Object getById(int id) {
return mainDao.findById(id);
}

@Override
public List<Object> getAll() {
return mainDao.findAll();
}

@Override
public Object create(Object o) {
Object obj = mainDao.save(o);
return obj;
}

//Other methods...

以及扩展 IMainService 的其他接口(interface),如 IUserService:

import org.springframework.stereotype.Service;

@Service
public interface IUserService extends IMainService{

}

他们的实现:

public abstract class UserService implements IUserService{

}

我做得对吗?如果不是,您有什么建议给我,我可以在哪里优化?

谢谢!

最佳答案

您的 IMainDao 似乎没有必要。您可以根据需要为实体定义接口(interface),例如:User、Order

@Repository
interface UserRepository extends JpaRepository<User, Long> {}

@Repository
interface OrderRepository extends JpaRepository<Order, Long> {}

并且,在您的业务逻辑层中,您可以拥有服务接口(interface)及其实现,例如:

@Service
interface UserService{
... method declarations goes here
}

class UserServiceImpl implements UserService {
@Autowired
UserRepository userRepository;

... implement interface methods
}

如果你在多个服务类中有共同的方法,你可以有一个通用的服务接口(interface),否则,IMainService 没有意义。

==== [编辑] 引入通用服务接口(interface) ====

让我们想象一下 UserServiceOrderService 都有共同的搜索方法。然后我们可以有一个通用服务接口(interface) (SearchService) 并在所需的服务实现类中实现它。

interface SearchService<T, I> {
T findLatestOne(){}
T lastEditedOne(){}
List<T> searchByKeywords{}
}

class UserService implements SerchService<User, Long> {
User findLatestOne(){ ... implementation }
User lastEditedOne(){ ... implementation }
List<User> searchByKeywords{ ... implementation }
}

class OrderService implements SerchService<Order, Long> {
Order findLatestOne(){ ... implementation }
Order lastEditedOne(){ ... implementation }
List<Order> searchByKeywords{ ... implementation }
}

关于java - Java Spring Boot如何实现Business Logic层和Repository层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276011/

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