취업을 한지 어느덧 3달이 지나가네요. 취업만 하면 세상 행복하게 잘 보낼 줄 알았지만 생각과는 다른 삶을 보내고 있습니다. 이제 곧 백엔드 개발을 들어갈 것 같은데 원래도 개발을 깊게 할 줄 모르기도 하면서 안한지도 오래되어 다시 되새겨보고자 글을 쓰게 됐습니다.
기존에 프로젝트를 모두 스프링 부트로 진행했기에 다시 한번 가장 간단하게 Controller, Service, Repository를 만들어 보고자 합니다.
Controller의 역할
Controller는 api 요청이 들어왔을 때, 적절한 Service를 호출하여 응답을 처리하는 역할입니다. 비유하자면 어느 Service에서 처리할 지 길을 알려주는 역할을 합니다. 예를 들어, ‘/login’ 엔드포인트 요청이 들어오면 아래와 같이 처리됩니다.
@RestController
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/login")
public String getName() {
return userService.getName();
}
}JavaService의 역할
비즈니스 로직을 처리하며 데이터를 가공하거나 Repository를 호출하여 데이터베이스로부터 데이터를 조회하는 역할을 합니다. DB가 구축되지 않은 상황이라면 아래와 같이 Map 자료구조를 활용하여 임시 데이터를 사용할 수 있습니다.
@Service
public class UserService {
private final UserRepository userRepository;
private final Map<Integer, String> db = new HashMap<>();
public UserService(UserRepository userRepository) {
// Repsitory 사용시
this.userRepository = userRepository;
// Repository 미사용시
db.put(1, "Pizza");
db.put(2, "Chicken");
}
public String getName() {
return db.getOrDefault(1, "Unknown");
}
}JavaRepository의 역할
데이터베이스와 상호작용하는 역할을 합니다. JPA, MyBatis 등을 활용하여 실제 DB와 연결할 수 있습니다.
@Repository
public interface UserRepository {
public String getName();
}JavaRepository는 interface로 작성해야 합니다. JPA를 사용한다면 아래와 같이 작성할 수 있습니다.
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {
// 쿼리 작성
}Java
답글 남기기