스프링부트를 공부하다가 entity를 응답메소드나 요청 메소드를 사용하지 않는이유가 이해되지 않아 chat gpt에 질문했다.
답 결과는 entity는 데이터베이솨 매핑되는 객체로 노출이 된다. 유지보수성을 저하시키는 요인이 된다고하여
사용을 권장하지 않는다고 한다.
------------------------------------------답변내용
- Entity 클래스는 데이터베이스와 매핑되는 객체입니다. 따라서 Entity 클래스를 직접 사용하면 데이터베이스 스키마와 밀접하게 연관된 애플리케이션 논리가 노출됩니다. 이는 애플리케이션의 유지보수성을 저하시키는 요인이 될 수 있습니다.
- Entity 클래스는 데이터베이스 스키마를 기반으로 만들어지기 때문에 필요하지 않은 필드들이 존재할 수 있습니다. 이 경우 응답 메소드에서 필요한 필드만 선택해서 반환할 수 없으므로, 불필요한 데이터까지 클라이언트로 전송될 가능성이 있습니다. 이는 성능 저하의 원인이 될 수 있습니다.
- Entity 클래스는 데이터베이스의 상태를 나타내기 때문에, 애플리케이션에서 변경될 가능성이 있는 필드가 포함될 수 있습니다. 이 경우, Entity 클래스를 직접 사용하면 클라이언트에서 임의로 필드 값을 변경할 수 있는 보안상의 문제가 발생할 수 있습니다.
따라서, Spring Boot에서는 Entity 클래스와 별도로 DTO(Data Transfer Object) 클래스를 사용하여 데이터 전송을 수행하는 것을 권장합니다. DTO 클래스는 Entity 클래스에서 필요한 필드만 선택하여 만들어지며, 필요한 경우에만 변경이 가능한 필드를 추가할 수 있습니다. 이를 통해, 데이터베이스 스키마와 애플리케이션 논리 간의 결합도를 낮출 수 있습니다.
'spring' 카테고리의 다른 글
CI/CD 란 무엇인가? (0) | 2023.04.25 |
---|---|
자바 주민등록번호 -> 만나이 계산하기 (0) | 2023.03.03 |