[Spring] 기본 데이터 접근과 @Component에 대하여

김진성·2021년 12월 11일
2

Spring

목록 보기
6/10

기본 데이터 접근 구조

1. DAO (Data Access Object)

DAO는 DB 데이터에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입, 삭제, 조회를 조작할 수 있는 기능을 수행하여 MVC 패턴의 Model이 DAO 같은 일을 수행한다.

2. DTO (Data Transfer Object)

DTO는 계층간 데이터 교환을 위한 Java Beans를 의미하여 로직을 가지지 않는 데이터 객체로 Getter/Setter 메소드만 가진 클래스를 의미한다.

3. VO(Value Object)

DTO와 달리 VO는 Read-Only 속성을 의미하는 값이다. 우리가 Color.RED 객체를 사용할 때 수정이 아니고 읽기만 하는 것처럼 Getter만 존재하는 것이라고 할 수 있다.

@Component Annotation 구조

우리가 계층간 데이터를 접근하는 과정에서 각 필요한 Annotation이 존재한다.

  • @Component : 제일 상위에 있는 Annotation으로 아래의 Annotaion을 포함함
  • @Repository : Persistence Layer에서 DAO를 명시하기 위하여 사용
  • @Service : Business Layer에서 Service를 명시하기 위하여 사용
  • @Controller : Presentation Layer에서 Controller를 명시하기 위하여 사용

코드로 표현해보기

User Model

@Entity
@Table
@Getter
@Setter
class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    
    public User() {}
}

UserRepository

@Repository
interface UserRepository extends JpaRepository <User, Interger> {

}

UserService

interface UserService {
    public void saveUser(User user);
}

@Service
class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;
    
    @Override
    public void saveUser(User user) {
        userRepository.save(user);
    }
}

코드 상에서 데이터 계층을 관리하는 측면에서 @Component를 쓰는 것보다는 @Repository, @Service, @Controller를 구분해 사용하는 것이 편하다.

profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글