inflearn logo
강의

Course

Instructor

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

Membership Inquiry API

api 응답객체 네이밍 및 new에 대해

Resolved

637

cw k

4 asked

0

안녕하세요. 강의 너무 잘 보고 있습니다.

좋은 컨텐츠를 제공해주시는 인프런과 영한님, 서포터분들께 감사드립니다.

 

api응답 객체 네이밍에 대해 질문이 있습니다.

등록,수정의 경우 응답객체 네이밍이 ~~Response

조회의 경우 MemberDTO 를 Result로 래핑해서 보내는데

DTO와 Response로 네이밍하는 기준이 있는지 궁금합니다.

 

또 하나는, 좀 엉뚱한 질문일 수도 있는데

응답시마다 new를 통해 응답객체를 생성하는데

대규모 시스템에 성능에 크게 문제가 없는지와

응답 객체를 싱글톤으로 만드는 패턴같은것도 있는지 궁금합니다.

 

감사합니다.

 

spring-boot spring java JPA

Answer 1

3

yh

안녕하세요. cw k님

프로젝트 마다 다를 것 같기는 한데요. 저는 특별한 네이밍 규칙을 가지고 있지는 않습니다.

API 응답의 최종 껍데기는 Response를 포함한다 정도가 규칙이 될 수는 있는데, 이런 규칙은 구성원들과 프로젝트를 진행하면서 합의를 이루는 것이 필요할 수 는 있습니다.

DTO는 데이터 전송 객체라는 뜻인데, 가장 광범위하게 데이터를 전달하는 목적으로 사용되는 객체를 뜻합니다.

DTO는 객체간의 전송에도 사용되고, API 응답에도 사용되는 가장 광범위한 의미로 생각하시면 됩니다.

 

Q: 응답시마다 new를 통해 응답객체를 생성하는데 대규모 시스템에 성능에 크게 문제가 없는지

-> 네 자바의 GC 성능은 매우 뛰어나기 때문에 이런 부분으로 성능 문제가 발생하지는 않습니다. 응답 객체를 싱글톤으로 구현하게 되면 멀티쓰레드 상황에서 공유 이슈가 발생하기 때문에 더 큰 문제가 발생할 수 있습니다. 그리고 더 나아가서 응답 객체들을 풀에 넣어두고 재사용하는 객체 풀링도 방법이 될 수 있지만, 이 경우에도 멀티쓰레드 상황에서 동시에 여러 쓰레드가 객체 풀에 접근하는 동시성 이슈를 락 등으로 해결해야 합니다. 현대에는 GC 성능이 매우 뛰어나기 때문에, 객체를 new로 생성해서 GC 하는 비용은 매우 저렴합니다. 결과적으로 멀티쓰레드 상황에서는 객체 풀링을 사용하는 비용보다 new를 직접 사용하는 것이 더 좋은 성능을 보입니다.

감사합니다.

1

cw k

답변 감사드립니다!

강의 관련 외 질문입니다.

0

66

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

90

1

BeanCreationException

0

89

3

Update 후 UpdateMemberResponse 매핑할 때

0

47

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

99

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

82

1

루트 쿼리라는것은

0

58

1

메서드를 분리하는 기준

0

63

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

110

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

85

2

fetch join과 영속화와 OSIV의 관계

0

86

2

Distinct 사용 전 결과에 대한 의문

0

113

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

57

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

136

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

180

2

양방향 연관관계 알아보는 법?

0

105

1

16강 17강 간단 정리 이게 맞을까요 ?

0

165

2