인프런 커뮤니티 질문&답변

팡휘님의 프로필 이미지
팡휘

작성한 질문수

스프링 핵심 원리 - 기본편

싱글톤 패턴

싱글톤으로 여러 사람의 정보를 어떻게 저장하나요 ?

해결된 질문

작성

·

202

·

수정됨

0

싱글톤을 활용해서 개인정보 등을 저장한다고 하면 MemberService 객체 하나가 여러 사람들에게 사용되잖아요? 근데 어떻게 각각의 사람들의 객체를 생성해주며 그런 개인정보를 db에 저장할 수가 있는걸까요? DB에 저장할 때는 결국 객체 자체를 저장하지 않습니까? 근데 싱글톤은 객체가 1개라는 점이 너무 상반되어서 이해가 안되는 것 같습니다

답변 1

1

안녕하세요. 팡휘님, 공식 서포터즈 y2gcoder입니다.

싱글톤을 사용하는 부분은 데이터가 아니라 데이터를 생성하거나 조작하는 로직입니다. 데이터는 당연히 똑같지 않기 때문에 싱글톤을 사용하지 않습니다. 개인정보를 저장하다고 하면 개인정보 데이터를 담는 객체에 싱글톤을 적용해주는 것이 아니라 개인정보 데이터를 담는 객체를 생성하는 로직을 실행하는 클래스를 싱글톤으로 만들어준다고 이해해주시면 감사하겠습니다!

감사합니다.

팡휘님의 프로필 이미지
팡휘
질문자

그러면 객체를 1개 생성한다! 라기보다는 어떤 공통의 로직을 틀로 만들어놓는 과정이 싱글톤 패턴일까요 ?? 즉, 이 클래스로 객체를 만드는 flow를 1개로 통일하는걸까요 ?

네 보통 스프링 빈(싱글톤)으로 만드는 것들은 개인화된 데이터를 담고 있는 객체보단 재사용할 수 있는 비즈니스 로직을 실행할 수 있는 객체라고 생각합니다. 그러한 객체들을 로직을 실행할 때마다 인스턴스를 생성하는 비용을 줄이기 위해 싱글톤 방식으로 미리 하나 만들어놓는 것이라고 저는 이해하고 있습니다!

물론 스프링 컨테이너에 싱글톤 빈으로 등록하면 단순히 위에서 말한 기능보다는 더 많은 기능을 담고 있습니다! (AOP, DI 등)

팡휘님의 프로필 이미지
팡휘
질문자

답변 감사합니다 !!!!!!!

팡휘님의 프로필 이미지
팡휘
질문자

저 혹시 싱글톤으로 만든 객체도 ~~~@75f4ab 뭐 이런식으로 객체가 생성되는데 "비즈니스 로직을 실행하는 객체"랑, 저희가 일반적으로 아는 객체는 다른 건가요? 메모리상에 저장방법이나 차이점이 있을까요 ...??

@ 뒤는 해당 객체 인스턴스의 고유한 해시코드를 16진수로 바꿔 표시한 것입니다! 이는 객체 인스턴스를 가리키는 것으로 참조형 객체들은 모두 갖고 있습니다. 모든 자바 객체는 힙영역에 저장됩니다!

팡휘님의 프로필 이미지
팡휘
질문자

답변 감사합니다 !

팡휘님의 프로필 이미지
팡휘

작성한 질문수

질문하기