Spring boot 02. 주요 구성요소

Geun Nam Park·2026년 4월 28일

Spring Boot

목록 보기
3/4

Spring Boot 구조


1. Entity(Domain)

데이터베이스 테이블과 매핑되는 객체
JPA에서 사용

@Entity
public class User {
	@Id
    @GeneratedValue
    private Long id;
    
    private String name;
}
  • 특징
    DB 테이블과 1:1 매핑
    비즈니스 로직보다는 데이터 구조 중심

2. Repository

DB 접근을 담당하는 인터페이스
JPA가 자동 구현

public interface UserRepository extends  JpaRepository<User, Long> {
}
  • 특징
    CRUD 자동 제공
    SQL 없이 DB 접근 가능

3. DAO(Data Access Object)

요즘은 Repository로 거의 대체

  • 역할
    DB 접근 로직 담당

  • 차이점
    DAO: 직접 SQL 작성
    Repository: JPA 기반 자동 정리


4. Service

비즈니스 로직 처리

@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));
    }
}
  • 특징
    트랜잭션 처리
    핵심 로직 위치

5. Controller

클라이언트 요청 처리 (API 엔드포인트)

@RestController
@RequestMapping("/users")
public class UserController {
	private final UserService userService;
    
    @PostMapping
    public User createUser(@RequestBody UserDto dto) {
    	return userService.saveUser(dto.getName());
    }
}
  • 특징
    HTTP 요청/응답 처리
    Service 호출 역할

6. DTO (Data Transfer Object)

계층 간 데이터 전달 객체

	private String name;
}
  • 사용하는 이유
    Entity 노출 방지
    필요한 데이터만 전달

7. Domain

비즈니스 개념 자체(User, Order 등)
Entity와 거의 같은 의미로 쓰임.


8. Exception

예외 처리 클래스

public class UserNotFoundException extends RuntimeException {
}
  • 역할
    에러 상황 명확화
    유지보수성 증가

9. Impl (Implementation)

인터페이스 구현 클래스

public class UserServiceImpl implements UserService {
}
  • 사용 시기
    인터페이스 기반 설계 시
    테스트 및 확장에 용이
    거의 생략

핵심 요약

Controller → 요청 처리
Service → 비즈니스 로직
Repository → DB 접근
Entity → DB 구조
DTO → 데이터 전달
Exception → 에러 처리

0개의 댓글