
데이터베이스 테이블과 매핑되는 객체
JPA에서 사용
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
}
DB 접근을 담당하는 인터페이스
JPA가 자동 구현
public interface UserRepository extends JpaRepository<User, Long> {
}
요즘은 Repository로 거의 대체
역할
DB 접근 로직 담당
차이점
DAO: 직접 SQL 작성
Repository: JPA 기반 자동 정리
비즈니스 로직 처리
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User saveUser(String name) {
return userRepository.save(new User(name));
}
}
클라이언트 요청 처리 (API 엔드포인트)
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@PostMapping
public User createUser(@RequestBody UserDto dto) {
return userService.saveUser(dto.getName());
}
}
계층 간 데이터 전달 객체
private String name;
}
비즈니스 개념 자체(User, Order 등)
Entity와 거의 같은 의미로 쓰임.
예외 처리 클래스
public class UserNotFoundException extends RuntimeException {
}
인터페이스 구현 클래스
public class UserServiceImpl implements UserService {
}
Controller → 요청 처리
Service → 비즈니스 로직
Repository → DB 접근
Entity → DB 구조
DTO → 데이터 전달
Exception → 에러 처리