api 응답객체 네이밍 및 new에 대해
안녕하세요. 강의 너무 잘 보고 있습니다.
좋은 컨텐츠를 제공해주시는 인프런과 영한님, 서포터분들께 감사드립니다.
api응답 객체 네이밍에 대해 질문이 있습니다.
등록,수정의 경우 응답객체 네이밍이 ~~Response
조회의 경우 MemberDTO 를 Result로 래핑해서 보내는데
DTO와 Response로 네이밍하는 기준이 있는지 궁금합니다.
또 하나는, 좀 엉뚱한 질문일 수도 있는데
응답시마다 new를 통해 응답객체를 생성하는데
대규모 시스템에 성능에 크게 문제가 없는지와
응답 객체를 싱글톤으로 만드는 패턴같은것도 있는지 궁금합니다.
감사합니다.
Answer 1
3
안녕하세요. cw k님
프로젝트 마다 다를 것 같기는 한데요. 저는 특별한 네이밍 규칙을 가지고 있지는 않습니다.
API 응답의 최종 껍데기는 Response를 포함한다 정도가 규칙이 될 수는 있는데, 이런 규칙은 구성원들과 프로젝트를 진행하면서 합의를 이루는 것이 필요할 수 는 있습니다.
DTO는 데이터 전송 객체라는 뜻인데, 가장 광범위하게 데이터를 전달하는 목적으로 사용되는 객체를 뜻합니다.
DTO는 객체간의 전송에도 사용되고, API 응답에도 사용되는 가장 광범위한 의미로 생각하시면 됩니다.
Q: 응답시마다 new를 통해 응답객체를 생성하는데 대규모 시스템에 성능에 크게 문제가 없는지
-> 네 자바의 GC 성능은 매우 뛰어나기 때문에 이런 부분으로 성능 문제가 발생하지는 않습니다. 응답 객체를 싱글톤으로 구현하게 되면 멀티쓰레드 상황에서 공유 이슈가 발생하기 때문에 더 큰 문제가 발생할 수 있습니다. 그리고 더 나아가서 응답 객체들을 풀에 넣어두고 재사용하는 객체 풀링도 방법이 될 수 있지만, 이 경우에도 멀티쓰레드 상황에서 동시에 여러 쓰레드가 객체 풀에 접근하는 동시성 이슈를 락 등으로 해결해야 합니다. 현대에는 GC 성능이 매우 뛰어나기 때문에, 객체를 new로 생성해서 GC 하는 비용은 매우 저렴합니다. 결과적으로 멀티쓰레드 상황에서는 객체 풀링을 사용하는 비용보다 new를 직접 사용하는 것이 더 좋은 성능을 보입니다.
감사합니다.
강의 관련 외 질문입니다.
0
81
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
100
1
BeanCreationException
0
96
3
Update 후 UpdateMemberResponse 매핑할 때
0
57
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
102
2
페이징 + 검색조건 관련해서 질문드립니다.
0
74
1
Query Dsl Q파일 질문입니다.
0
86
1
루트 쿼리라는것은
0
62
1
메서드를 분리하는 기준
0
71
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
116
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
92
2
fetch join과 영속화와 OSIV의 관계
0
90
2
Distinct 사용 전 결과에 대한 의문
0
118
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
63
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
79
2
dto 필드 속 엔티티 여부
0
63
1
뷰템플릿 사용 시
0
82
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
88
1
DTO 대신 Form 사용은 안되나요?
0
140
1
OSIV ON 상태일 때
0
99
1
fetch join VS fetch join 페이징 궁금증
0
190
2
양방향 연관관계 알아보는 법?
0
110
1
16강 17강 간단 정리 이게 맞을까요 ?
0
168
2

