Spring Boot, MVC 디자인패턴

jiji·2023년 10월 26일
0

JAVA

목록 보기
7/9

Entity

: 엔티티는 데이터 모델을 나타내는 클래스입니다. 이 클래스는 데이터베이스 테이블과 매핑됩니다.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String email;
}

Repository

: 데이터베이스와의 상호작용을 담당하는 인터페이스입니다. 스프링 데이터 JPA를 사용하면 인터페이스만 정의하고 스프링 부트가 자동으로 구현체를 생성해줍니다.

public interface UserRepository extends JpaRepository<User, Long> {
    // 사용자(User) 엔티티와 관련된 데이터베이스 작업을 정의합니다.
}

Service

: 비즈니스 로직을 구현하며 컨트롤러와 리포지토리 사이의 중간 계층입니다. 비즈니스 로직을 처리하고 데이터베이스 작업을 호출하여 결과를 반환합니다.

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
    
    public void saveUser(User user) {
        userRepository.save(user);
    }
    
    // 다른 비즈니스 로직 메서드들
}

Controller

: 컨트롤러 클래스는 HTTP 요청을 처리하고 서비스 클래스를 호출하여 데이터를 가져오거나 수정하는 역할을 합니다.

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.getUserById(id);
        if (user == null) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        return new ResponseEntity<>(user, HttpStatus.OK);
    }
    
    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        userService.saveUser(user);
        return new ResponseEntity<>(user, HttpStatus.CREATED);
    }
    
    // 다른 요청 처리 메서드들
}

0개의 댓글

관련 채용 정보