: 엔티티는 데이터 모델을 나타내는 클래스입니다. 이 클래스는 데이터베이스 테이블과 매핑됩니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
}
: 데이터베이스와의 상호작용을 담당하는 인터페이스입니다. 스프링 데이터 JPA를 사용하면 인터페이스만 정의하고 스프링 부트가 자동으로 구현체를 생성해줍니다.
public interface UserRepository extends JpaRepository<User, Long> {
// 사용자(User) 엔티티와 관련된 데이터베이스 작업을 정의합니다.
}
: 비즈니스 로직을 구현하며 컨트롤러와 리포지토리 사이의 중간 계층입니다. 비즈니스 로직을 처리하고 데이터베이스 작업을 호출하여 결과를 반환합니다.
@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);
}
// 다른 비즈니스 로직 메서드들
}
: 컨트롤러 클래스는 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);
}
// 다른 요청 처리 메서드들
}