inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

DDD와 JPA

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 기존에 nosql위주로 개발을 하다가 mysql 및 JPA를 도입하려고하는 영한님 강의 듣고 있는 개발자입니다. ddd와 연관지어서 jpa의 엔티티 정책에 궁금한 점이 2가지 있는데 (유사한 카테고리) 1. Team 에그리거트와 Member 에그리거트는 간의 경계가 허물어 지는 문제 예를들어서 @Entity class MemberEntity { ... @ManyToOne Team team; ... } 이런식으로 엔티티가 구성 하시던데요 에릭에반스인지 반버논 책인지 기억은 안나는데 Team을 직접 가지기보다는 String team_id;값을 가지는 것이 권장된다고 알고 있고 저는 실무에서 그렇게 사용하고 있었습니다. 제가 업무에서 mysql를 사용하지 않아서 실제 mysql jpa 사용하시는 분들도 실전에서 위처럼 그대로 사용하는지 궁금하네요. JPA식으로 사용하게되면, MemberRepository에서 member 를 조회하면 , TeamRepository를 조회하지 않고도 팀 정보를 가져오게 되는 것인데, 이러면 바운디드 컨텍스가 무너지는 결과를 초래하지 않나 싶습니다. 이부분에 대해서 영한님 의견은 어떠신가요? 2. Entity의 오염 JPA를 쓰다보면 @ManyToOne, Load 정책 등 같은 비즈니스 로직과 무관한 DB종속적인 값들이 Entity에 들어가게되더라고요 DDD에서 말하는 순수 핵심 비즈니스 로직의 Entity만 넣고 쓰고 싶은데, JPA를 활용하게 되면 이게 힘든 부분이죠? JPA Entity를 흔히말하는 DAO처럼 쓰고 별도의 Domain Entity를 만들고 싶은데 이렇게 가능한지 궁금합니다. 대충 JPA내용을 봤을때 이렇게 분리하는게 불가능한 것 같기는한데 실제로 Entity를 어떻게 사용중이신지 궁금합니다.

  • ddd
  • java
  • JPA
log4j 댓글 2 좋아요 0 조회수 752

기본키와 관련하여 질문드릴게요!.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

@Entity @Getter @Setter @NoArgsConstructor (access = AccessLevel. PROTECTED ) public class Bbs { @Id @GeneratedValue (strategy = GenerationType. SEQUENCE ) @Column (name = "BBS_NO" ) private Long bbsNo ; //bbs 기본키 private String bbsTitle ; private String bbsContent ; private String bbsDate ; @ColumnDefault ( "0" ) private Integer bbsHit ; private String bbsNotice ; private String bbsSecret ; @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "MEMBER_ID" ) private Member member ; @OneToMany (mappedBy = "bbs" ) List<Comment> comments = new ArrayList<>() ; public void addMember (Member member){ this . member =member ; member.getBbs().add( this ) ; } public Bbs (String bbsTitle , String bbsContent , String bbsDate , Integer bbsHit , String bbsNotice , String bbsSecret , Member member) { this . bbsTitle = bbsTitle ; this . bbsContent = bbsContent ; this . bbsDate = bbsDate ; this . bbsHit = bbsHit ; this . bbsNotice = bbsNotice ; this . bbsSecret = bbsSecret ; this . member = member ; } public void updateBbs (Long bbsNo , String bbsTitle , String bbsContent , String bbsDate , Integer bbsHit , String bbsNotice , String bbsSecret) { this . bbsTitle = bbsTitle ; this . bbsContent = bbsContent ; this . bbsDate = bbsDate ; this . bbsNotice = bbsNotice ; this . bbsSecret = bbsSecret ; } } 위에 코드가 bbs기본키 전략이고. @Entity @Getter public class Comment { @Id @GeneratedValue (strategy = GenerationType. SEQUENCE ) @Column (name = "COMMENT_NO" ) private Long commentId ; //comment 기본키 private String content ; @ColumnDefault ( "0" ) private int commentCnt ; // 대댓글시 정렬을 위해 사용 @ColumnDefault ( "0" ) private int commentGroup ; private String Date ; @ColumnDefault ( "0" ) private int commentSequence ; @ColumnDefault ( "0" ) private int level ; @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "BBS_NO" ) private Bbs bbs ; @ManyToOne (fetch = FetchType. LAZY ) @JoinColumn (name = "MEMBER_ID" ) private Member member ; public Comment () { } public Comment (String content , int commentCnt , int commentGroup , String date) { this . content = content ; this . commentCnt = commentCnt ; this . commentGroup = commentGroup ; this . Date = date ; } public void addMember (Member member){ this . member =member ; member.getComments().add( this ) ; } public void addBbs (Bbs bbs){ this . bbs =bbs ; bbs.getComments().add( this ) ; } } 이게 코맨트(댓글) 기본키 전략입니다. 위에 사진을 보면 bbs_no이랑 commemt_no이랑 기본키가 같이 올라갑니다..... 제가 원하는건 bbs_no 도 1부터 증가하고 comment_no도 1부터 증가하게 하고싶은데 따로 기본키 설정을 해주었는데 왜 같이 올라가는지 잘 모르겠습니다. 강의나,JPA 기본키 전략을 다시 보아도 해결책을 찾이 못해 질문 드립니다.

  • 기본키
  • JPA
  • java
조인태 댓글 1 좋아요 0 조회수 220

faker 이미지

미해결

[리뉴얼] React로 NodeBird SNS 만들기

faker 이미지가 이런식으로 나오는거면 컴터 사양문제일까요??

  • react
  • nodejs
  • redux
  • express
  • Next.js
pilotkdw999 댓글 2 좋아요 0 조회수 386

9.격자판 최대합문제 질문있습니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

answer = Math.max(answer,sum1); answer = Math.max(answer,sum1); //두 부분중 위쪽 코드에서 answer = Math.max(,sum1,sum2); 이렇게 한번에 사용하면 왜 에러가 뜨나요?? ㅁanswer에 sum1,sum2중 최대가 들어간다고 생각했는데 intellij에서는 실행이되는데 채점사이트에서는 안됩니다. 단순 채점사이트에서만 에러인지 이렇게 사용하면 안돼는건지 궁금합니다

  • java
  • 코테 준비 같이 해요!
댓글 1 좋아요 0 조회수 317

postcss plugin 에 관한 오류가 나타납니다 ㅜ

미해결

[리뉴얼] React로 NodeBird SNS 만들기

전 강좌에서 캐루셀 설정후에 npm run dev를 통하여 확인해보려 하는데 ready - started server on 0.0.0.0:3060, url: http://localhost:3060 Unknown error from PostCSS plugin. Your current PostCSS version is 8.4.5, but autoprefixer uses 6.0.23. Perhaps this is the source of the error below. error - ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[2].oneOf[7].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[2].oneOf[7].use[2]!./node_modules/antd/dist/antd.css BrowserslistError: Unknown browser query `dead` at Array.reduce (<anonymous>) 이러한 에러가 뜹니다 ㅜ 구글링해서 계속 찾아보고있는 중인데 도대체 무슨이유인지 모르겠습니다 ㅜㅜㅜ 부탁으려요

  • redux
  • express
  • nodejs
  • react
  • Next.js
문종현 댓글 4 좋아요 0 조회수 1950

스프링 책 추천

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요.! 김영한강사님 로드맵을 따라가려고 합니다. jpa로드맵 말고, '스프링 완전정복' 로드맵을 따라가려고 합니다. 혹시 강의와 같이 볼만한 책을 추천해주실 수 있나요?

  • spring
  • java
  • MVC
  • spring-boot
깨위 댓글 1 좋아요 0 조회수 1451

패키지 삭제하고 다시

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

안녕하세요 선생님 제가 웹팩 설치할 때 --dev 를 안 붙여서 devDependencies 가 아닌 dependencies에 설정됐는데 yarn remove webpack해도 안되네요 ㅠㅠ 혹시 이럴 경우 어떻게 삭제하고 다시 설치할 수 있나요?

  • react
  • rest-api
  • graphql
댓글 1 좋아요 0 조회수 357

질문입니다.

미해결

윤재성의 만들면서 배우는 Spring MVC 5

혼자 해결해보려다 답이 안나와서 질문드립니다. <c:forEach /> 사용하여 top_menu 의 게시판 링크를 작성하는 부분에서 ${topMenuList} 가 제대로 동작하지 않는 것 같습니다. 게시판 이름별로 링크가 생성되지 않고 ,${obj.board_info_name} 만 화면에 출력됩니다. 어느 부분에서 놓치고 있는 건지 모르겠습니다.

  • 질문
  • mvc
  • java
  • spring
  • xml
댓글 1 좋아요 0 조회수 234

api 명세는 어떤 도구를 사용하시나요 ?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

api를 작성하게되면, api를 쓰는 쪽을 위한 명세가 필요한데, 이 부분은 실무에서 주로 어떤 도구를 사용하시나요 ? 제가 알아본 것은 swagger인데, 함수에서 작성을 하면 어노테이션이 너무 길어져서 실제로도 사용하는지가 궁금합니다.

  • spring-boot
  • JPA
  • spring
  • java
ceze 댓글 1 좋아요 0 조회수 889

글 작성시 UserID가 DB에 저장안되는 이슈

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요~ 글 작성시 UserID가 DB에 저장안되는 이슈가 있어서 질문드립니다. 게시글을 작성 후에 TypeError : Cannot read properties of null (reading 'nickname') 에러가 납니다. 지금까지 해본 것 1. 다른 답글에 적어주신 내용처럼 router/post.js 쪽에서 req.user.id를 확인해보았습니다. 위에 사진처럼 작성자의 아이디가 나왔습니다. 2. MySQL의 DB에 보니까 UserId가 올라오고 있지 않습니다. 3. res.send로 받은 result를 console.log를 찍어보니까 UserId가 없었습니다. 4. MySQL 에 UserId를 직접 입력 (1) 해보니까 에러 없이 잘 나왔습니다. 제 생각에는 Model에서 에러가 발생한 것 같습니다. 깃허브에 올려주신 것을 보니까 5버전에 클래스로 하신 코드이신데 강의에서는 위와 같이 사용중이라서 참고를 해보았으나 DB 등록시 UserId가 입력이 안되는 것 같습니다. 알려주신대로 기능 추가시 흐름을 정리해서 보면서 생각해보니까 여기까지는 에러가 왜 낫는지 알겠는데 몇시간을 고민해도 버그가 수정이 안되서 송구스러운 마음을 가지고 질문드립니다. 깃허브 주소 : https://github.com/hyunjoogo/react-nodebird

  • Next.js
  • react
  • redux
  • express
  • nodejs
김현주 댓글 1 좋아요 1 조회수 309

member table inset 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MEMBERS 에 insert 하려고하는데 아래와 같은 오류가 발생합니다. 실행하고자 하는 코드 : insert into member(name) values("spring") 오류 코드 Column "spring" not found; SQL statement: insert into member(name) values("spring") [42122-200] 42S22/42122 (도움말) org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "spring" not found; SQL statement: insert into member(name) values("spring") [42122-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:453 ) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429 ) at org.h2.message.DbException.get(DbException.java:205 ) at org.h2.message.DbException.get(DbException.java:181 ) at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:163 ) at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:145 ) at org.h2.command.dml.Insert.prepare(Insert.java:327 ) at org.h2.command.Parser.prepareCommand(Parser.java:744 ) at org.h2.engine.Session.prepareLocal(Session.java:657 ) at org.h2.engine.Session.prepareCommand(Session.java:595 ) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1235 ) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:212 ) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201 ) at org.h2.server.web.WebApp.getResult(WebApp.java:1459 ) at org.h2.server.web.WebApp.query(WebApp.java:1116 ) at org.h2.server.web.WebApp$1.next(WebApp.java:1078 ) at org.h2.server.web.WebApp$1.next(WebApp.java:1065 ) at org.h2.server.web.WebThread.process(WebThread.java:178 ) at org.h2.server.web.WebThread.run(WebThread.java:94 ) at java.base/java.lang.Thread.run(Thread.java:834) test.mv도 읽기전용이 아닌것을 확인했습니다. 왜 이런 오류가 발생하고.. insert가 안될까요?

  • java
  • spring-boot
  • MVC
  • spring
깨위 댓글 4 좋아요 2 조회수 1127

해결법 - The type org.springframework.context.ConfigurableApplicationContext cannot be resolved.

미해결

자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌

The type org.springframework.context.ConfigurableApplicationContext cannot be resolved. 이 에러를 많이들 맞이하시는것 같은데,, https://gocoder.tistory.com/721 이곳을 보니 .m2 > repository 를 지우고 maven 업데이트를 다시 하라고 합니다. 이렇게 하니 전 해결되었습니다.

  • spring
  • java
조창희 댓글 0 좋아요 0 조회수 1396

react native navigation 오류 해결 방법 문의

미해결

react native 네비게이션 설치를 하고 시뮬레이터 기동 시 오류가 발생하는데 해결방법 아시는분 계시나요ㅠㅠ os 업데이트 해보고 dependencies 삭제하고 재설치 해봐도 오류가 발생하는데 어떻게 해결해야 할까요.. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • react
  • navigation
도전적인 소 댓글 0 좋아요 0 조회수 467

마지막 강의에서 만난 오류 두가지 해결과정

미해결

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

여태껏 다른 분들이 달아주신 댓글을 종합해서 정리해봤습니다 # 1. 첫번째 오류 - v6 오류 Warning: Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it. 이 오류는 v6에서 element 내부에 Auth 지원이 안되어서 생기는 오류 같습니다 ## 1-1. 해결방법 ### 1-1-1. App.js element 수정하기 < BrowserRouter > < Routes > < Route exact path = "/" element = { Auth ( LandingPage , null ) } /> < Route exact path = "/login" element = { Auth ( LoginPage , false ) } /> < Route exact path = "/register" element = { Auth ( RegisterPage , false ) } /> </ Routes > </ BrowserRouter > 여기서 Auth를 모두 지우고 컴포넌트를 넣으세요 < BrowserRouter > < Routes > < Route exact path = "/" element = { < LandingPage /> } /> < Route exact path = "/login" element = { < LoginPage /> } /> < Route exact path = "/register" element = { < RegisterPage /> } /> </ Routes > </ BrowserRouter > (이렇게) ### 1-1-2. 각 컴포넌트 export 위치에 Auth를 감싸기 export default LoginPage ; export default LandingPage ; export default RegisterPage ; 지금 LoginPage, LandingPage, RegisterPage의 export가 그냥 이렇게 되어있을 겁니다 이자리에서 Auth 로 감싸줄 겁니다 export default Auth ( LoginPage , null ); export default Auth ( LandingPage , false ); export default Auth ( RegisterPage , false ); 이렇게 변경하시면 됩니다 그리고 강의 중에 작성하는 모든 props.history는 import { useNavigate } from 'react-router-dom' let navigate = useNavigate () navigate ( '/login' ) navigate('/') 로 작성하시면 됩니다 # 2. 두번째 오류 - auth.js의 액션 이름 괄호 놓침 Uncaught TypeError: (0 , _actions_user_action__WEBPACK_IMPORTED_MODULE_2__.auth)(...).then is not a function 이런 오류가 뜨면서 백지가 나타났는데 오류 의미를 몰라서 한참 찾았습니다 ## 2-1. 해결방법 React . useEffect (() => { dispatch ( auth (). then ( response => { console . log ( response ) })) }, []) 이렇게 되어있었는데, (auth().then()) 가 아니라 (auth()).then() 입니다 React . useEffect (() => { dispatch ( auth ()). then ( response => { console . log ( response ) }) }, []) 찾기 힘든 오타라 저는 한참 찾았어요 .... 조심하시길 .... # 3. 세번째 오류 - 이유를 알 수 없는 504 서버에러 이건 그냥 빡쳐서 자고 다음날 하니까 해결 됐습니다 정 안되면 다음날 해보세요

  • nodejs
  • react
devjeenie 댓글 5 좋아요 25 조회수 1009

reactQuery + graphql 흐름 질문.

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

reactQuery에대해서 graphql을 호출하는 과정에있어서 에매한 부분이 있는것같아 나름대로 정리를 해봤습니다... 혹시 제가 잘못 이해하고있는 부분이 있을까요!!?? 1. graphql를통한 데이터 불러오기 흐름. (+next.js 서버사이드 렌더링 가정) 1) 서버사이드 렌더링에의해 불러오는 데이터를 hydrate를통해 클라이언트측 cache에 저장시킨다. 2) 최초접속시 useQuery를통해 데이터를 요청하지만, 우선은 당장 cache에 존재하는 데이터를 보여준다. 3) 이후 useQuery를 통해 데이터를 가져왔을떄 기존에 cache에 존재하는 데이터와 비교후, 바뀐부분만 교체시킨다. 4) 이후 새로고침이 발생했을떄 cache에서 데이터를 가져오게됨으로써 빠른 렌더링을 구현 할 수 있게된다. 2. graphql를통한 생성, 업데이트, 제거 흐름. 1) 우선 useMutation을통해 필요한 정보들을 fetcher를 태워 graphql요청을 보낸다. 2) 이후 성공하게되면 client.setQueryData를통해 클라이언트측 cache에 접근하여 데이터를 업데이트 시킨다. 3) 이과정에서 QueryKeys.MESSAGES를 통해 클라이언트측 cache에 접근하여 데이터를 업데이트하게됨으로, 최초 useQuery를통해 불러온데이터가 변경된것과 동일함으로 useEffect의 dependency Array에 전달된 data.messages가 변경된것으로 인식하여, setMsgs가 호출된다. 4) 이과정에서 useQuery의 fetcher는 호출되지않는다. 3. 클라이언트측 cahce를 눈으로 확인할 수 있는 방법이있을까요?(단순히 개발자 도구에서의 애플리케이션탭의 cache부분에서는 확인이 안되는것같아 질문드립니다..!) 또한 이부분이 리덕스의 스토어 역할을 한다고 생각해도되는지 궁긍합니다!

  • rest-api
  • react
  • graphql
노강표 댓글 1 좋아요 0 조회수 352

1강 login 페이지 들어갈 시 오류 해결방법이 있을까요

미해결

오픈 소스 자바스크립트 React 프로그래밍 입문 Part.1

오류 화면 첨부합니다 . 혼자 해결하기엔 초급자라 어려움이 있습니다 . 혹시 해결방법 아시는분 있으면 공유부탁드립니다 ㅠㅠ

  • react
  • react
정민 댓글 0 좋아요 0 조회수 212

리액트 query 질문

해결됨

풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)

클라이언트에서 리액트 쿼리를 활용하여 graphql을 다루는 이유가 있으신가요? 리액트 쿼리를 활용하지않고 graphql를 다룰 수 있는지도 궁금합니다!

  • graphql
  • react
  • rest-api
노강표 댓글 1 좋아요 0 조회수 1396

Result 클래스 관련 질문입니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

Result 클래스를 만들어서 response 데이터를 보냈습니다. 이때 제너릭으로 설정하신 이유가 있나요? 현재 아래 코드가 이런식입니다. static class Result<T> { private T data; } 그런데 제너릭을 쓰지 않는 반환용 DTO를 만들어서 static class ResultDto{ private List<OrderDto> orderDtos } 이렇게 하지 않는 이유가 있나요? 보통 실무에서는 어떤 방식을 주로 사용하시나요? 감사합니다.

  • java
  • JPA
  • spring-boot
  • spring
asdf5184 댓글 1 좋아요 2 조회수 971

openjdk-17 다운로드 후 Sources에서 Language level

해결됨

코딩으로 학습하는 리팩토링

안녕하세요. 프로젝트 설정 문의드려요~ 제목에 적은거 처럼 openjdk-17다운로드 후 Apply 누른 다음 Language level에 17버전이 보이지 않는데 어떻게 해야되나요??...

  • intellij
  • java
  • refactoring
얄라차개발자 댓글 2 좋아요 0 조회수 1304

싱글톤 생성 방법 중 enum 단점에 대해 질문있습니다.

미해결

코딩으로 학습하는 GoF의 디자인 패턴

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~ 우선 이런 좋은 강의를 제공해주셔서 정말 감사합니다. 싱글톤 생성 방법 중 enum으로 생성했을 시에 단점 중에 lazy initialization이 안된다고 말씀하셨는데요, 이 부분에서 궁금증이 있어서 질문 남깁니다. 예제에서 보여주신 enum 내의 INSTANCE 또한 클래스로딩 시점에 JVM의 static 영역에 변수가 등록되고, SettingsHolder와 마찬가지로 호출시점에 힙영역이 할당되면서 그때, static 영역내 변수에 해당 힙주소가 참조되는것으로 알고 있습니다, 그렇다면 이 부분도 lazy initialization이라고 볼 수 있는것 아닌가요? 혹시 제가 잘못알고 있는 부분이 있다면 알려주시면 감사하겠습니다 ㅜ

  • enum
  • 싱글톤
  • 디자인-패턴
  • java
  • 단점
김현우 댓글 2 좋아요 2 조회수 843

인기 태그

인프런 TOP Writers

주간 인기글