많이 나오는 스프링 클래스들 간의 관계

buffet_psi·2023년 3월 22일
0

sprint_basic

목록 보기
3/6

스프링프로젝트를 하다가 많이 나오는 클래스들에 대해서 적어보도록 하겠습니다!

1.엔티티(Entity) ==>@Entity 어노테이션 사용

  • 데이터베이스에서 사용되는 테이블과 매핑되는 클래스이다.
  • 주로 JPA를 이용한 ORM(Object Relational Mapping)을 사용하여 엔티티를 정의한다.
  • 엔티티는 데이터베이스에 저장될 데이터를 담는 객체로 사용된다.

2.컨트롤러(Controller) ==>@Controller 어노테이션 사용

  • 컨트롤러는 클라이언트의 요청을 처리하고 응답을 반환하는 역할을 합니다.(스프링에서는 HTTP요청들)
  • Spring MVC 프레임워크에서 사용되며, @RequestMapping 애너테이션을 사용하여 요청 매핑을 설정합니다. + 요청에 따라 비즈니스 로직을 실행하고, 데이터를 조회하여 뷰에 전달합니다.

3.레퍼지토리(Repository) ==>@Repository 어노테이션 사용

  • 레퍼지토리는 데이터베이스와 연동하여 데이터를 저장하고 조회하는 역할을 합니다.
  • Spring Data JPA에서는 JpaRepository 인터페이스를 상속하여 쉽게 레퍼지토리를 구현할 수 있습니다.
  • 데이터베이스의 데이터를 다루기 위한 CRUD(Create, Read, Update, Delete) 메서드를 어떻게 구현할지 정의하는 계층이다.
    => 엔티티를 다루기 위해서 JPA레퍼지토리를 사용한다!

Jpa리포지터리에서 제공하는 메서드들

  • findById(ID id) : 지정된 ID로 엔티티를 검색합니다.
  • findAll() : 모든 엔티티를 검색합니다.
  • save(S entity) : 주어진 엔티티를 저장하고, 저장된 엔티티를 반환합니다.
  • deleteById(ID id) : 지정된 ID의 엔티티를 삭제합니다.
  • count() : 데이터베이스의 엔티티 수를 반환합니다.
  • existsById(ID id) : 주어진 ID의 엔티티가 존재하는지 확인합니다.

4.서비스(Service) ==>@Service 어노테이션 사용

  • 서비스는 비즈니스 로직을 처리하는 역할을 합니다.
  • 주로 컨트롤러와 레퍼지토리 사이에서 중간 계층으로 사용되며, 비즈니스 로직의 구현과 트랜잭션 처리 등을 담당합니다. (컨트롤러는 래퍼지토리를 직접 호출하지 않고 중간에 service를 두고 데이터를 처리한다.)
  • 데이터베이스에 직접적인 접근이 없으며, 레퍼지토리를 이용하여 데이터를 저장하고 조회합니다.

(왜 서비스가 필요한가? 모듈화 때문이다.
예를들어 어떤 컨트롤러가 여러개의 리포지터리를 사용하여 데이터를 조회한후 가공하여 리턴한다고 가정해 보자. 이러한 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출하여 사용하면 된다. 하지만 서비스로 만들지 않고 컨트롤러에서 구현하려 한다면 해당 기능을 필요로 하는 모든 컨트롤러가 동일한 기능을 중복으로 구현해야 한다. 이러한 이유로 서비스는 모듈화를 위해서 필요하다.)

결론
정리 :
1. 컨트롤러가 요청한 url을 매핑해주려고 한다!
2. 어떻게? 서비스를 통해서!
3. 근데 서비스는 래퍼지토리의 특성을 받아서 더 가독성 있고 쉽게 메서드를 만들어서 컨트롤러에게 준다.

profile
노력과효율!

0개의 댓글