🌸 상황
나는 dto 클래스가 없었지만 함께 개발하는 팀원의 코드를 보니 entity 클래스 말고도 DTO 클래스가 있었다.
⭐ 아하! 포인트
지금까지 혼자 공부할 때는 거의 entity 클래스를 dto 클래스처럼(객체처럼 활용, 데이터도 주고/뱓음) 사용했었다.
그 과정들이 하나의 클래스로 진행되니까 오히려 효율적이라고 생각했었는데 다음과 같은 차이점이 존재했다.
JPA에서 Entity 클래스는 DB의 테이블과 매핑되는 클래스입니다. 이 클래스는 JPA가 제공하는 다양한 기능을 사용할 수 있도록 매핑 정보를 가지고 있습니다. Entity 클래스는 기본적으로 DB의 스키마를 기반으로 생성됩니다. DTO(Data Transfer Object) 클래스는 엔티티(Entity) 객체와 비슷하지만, 보통 엔티티 객체와는 다르게 웹 페이지나 어플리케이션 간에 데이터 전달을 위해 사용됩니다. 주로 엔티티 객체와 비슷한 구조를 가지지만, 특정한 목적을 위해 사용되는 클래스입니다. 따라서, Entity 클래스와 DTO 클래스는 기능적으로 서로 다릅니다. Entity 클래스는 DB와 연동되는 역할을 하고, DTO 클래스는 비지니스 로직에서 사용됩니다. 따라서, Entity 클래스를 DTO 클래스처럼 사용하면, 클래스의 역할이 모호해질 수 있으며, 코드 구조의 복잡성이 증가할 수 있습니다. 만약 DTO 클래스 없이 Entity 클래스만 사용한다면, 서비스 계층이나 컨트롤러 계층 등에서 데이터 전송을 위해 Entity 클래스를 사용해야 하는데, 이 경우에는 데이터베이스 스키마와 밀접한 관계가 있는 Entity 클래스를 그대로 사용하게 되므로, 시스템 유지보수나 확장성 등의 측면에서 문제가 생길 수 있습니다.
⛅향후방향
Entity 클래스와 DTO 클래스를 분리해서 사용하는 것이 좋다는 깨달음을 얻었다.
위와 같은 개념을 바탕으로 앞으로의 개발에 적용해 나갈 것이다.
'개발공부 > spring boot' 카테고리의 다른 글
Test code - MockMvc란? (0) | 2024.05.23 |
---|---|
[java] Optional - Optional의 매핑 메소드 (1) | 2023.10.24 |
spring boot - Querydsl, DSL(Domain-Specific Language)이란?? (0) | 2023.07.15 |
spring boot - JPQL과 Querydsl의 개념과 차이점 파헤치기🕵🏻 (0) | 2023.07.12 |
JWT_인증/인가 (0) | 2023.06.05 |