inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

createGlobalStyle의 위치와 영향범위

미해결

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

createGlobalStyle이 컴포넌트 형태로 적용되다보니 마치 현재 컴포넌트 하위만 적용될 것 같은 느낌이 있는데요 실제 영향범위는 class 수정이므로 페이지 전체에 영향을 끼치다보니 개인적으로 비직관성이 느껴집니다 createGlobalStyle을 실제로 사용하신 경험이 있는지와 사용하셨다면 _app 외에 다른 위치에서도 쓰셨는지 궁금합니다

  • react
  • redux
  • node.js
  • express
  • next.js
Eric J 댓글 2 좋아요 0 조회수 116

Snowflake처럼 동적으로 생성되는 ID, Mock 테스트가 올바른 접근법일까요?

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

14:42 에서 Snowflake 알고리즘으로 articleId를 생성한 후 DB에 저장된 121530268440289280L값을 사용해서 테스트 코드를 작성하시는 것을 보고, 실제로 Snowflake를 도입해서 Id를 생성하고 같은 방식으로 테스트 코드를 작성한다면 DB에 종속적이라서 반복적으로 테스트 코드를 실행할 때 테스트 코드의 유지보수에서 문제가 발생할 수 있을 거라는 생각이 들었습니다. 이런 문제를 막기 위해서 테스트 시에는 Mock 객체를 사용해 미리 정해진 Snowflake가 고정 ID 값을 반환하도록 하는 방식으로 테스트 코드를 작성하는게 맞는건지 궁금해서 질문글을 남기게 되었습니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
사유 댓글 2 좋아요 0 조회수 153

@NaturalIdCache에 대한 보충 설명 및 사용법 공유

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

'25. 엔티티의 자연키 지정' 영상의 후반부에 적용한 @NaturalIdCache 에 대해 추가로 학습한 내용이, 저처럼 해당 애노테이션을 처음 접한 분들에게 도움이 될 것 같아서 글을 작성합니다. 강의에서 오해가 있을 수 있는 부분, 그리고 자연키에 캐시를 적용하는 방법을 정리해 보았습니다. 강의 내용과 실제 동작의 차이점 강의에서는 “같은 트랜잭션 안에서 같은 아이디 값을 가지고 여러 번 조회 시 Persistence Context 에 캐시된 값을 꺼내오는 것 처럼. @NaturalIdCache 를 적용하면 이것도 영속 컨텍스트에 캐싱이 된다.”고 말씀하셨습니다. 해당 내용에 대한 이해를 돕기 위해 Hibernate의 두 가지 캐시에 대해 간단히 짚고 넘어가겠습니다. 1차 캐시 (First-Level Cache): 세션(영속성 컨텍스트) 범위의 캐시입니다. 같은 트랜잭션 안에서만 유효하며, 트랜잭션이 끝나면 사라집니다. Spring Data JPA에서는 기본적으로 @Id 에 대한 조회를 1차 캐시합니다. 2차 캐시 (Second-Level Cache): 세션 팩토리 범위의 캐시로, 여러 세션에서 데이터를 공유할 수 있습니다. 적용하려면 별도의 의존성 추가 및 캐시 관련 설정( @Cache 등)이 필요합니다. 따라서, "같은 트랜잭션 안에서 캐시된 값을 꺼내온다."는 말은 세션 범위의 1차 캐시로 해석됩니다. 하지만 제가 직접 테스트해 본 결과, @NaturalIdCache 는 1차 캐시 가 아닌 2차 캐시 와 관련이 있었으며, 1차 캐시를 적용하기 위해서는 다른 방법이 필요했습니다. 테스트를 통한 확인 자연키에 대한 1차 캐시 동작을 확인하기 위해, 강의에서 적용한 Member 엔티티의 @NaturalIdCache 를 제거 하고, 자연키(Email)에 @NaturalId 만 적용 한 상황에서 두 가지 방식으로 테스트를 진행했습니다. 테스트1: findByEmail 메서드를 사용한 조회 Java @Test void NaturalIdFirstLevelCache() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); // 같은 email(Natural ID)로 두 번 조회 Member findMember1 = memberRepository.findByEmail(member.getEmail()).get(); Member findMember2 = memberRepository.findByEmail(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); } Spring Data의 쿼리 메서드를 사용하여 이메일로 조회하는 findByEmail 메서드를 만들고, 한 트랜잭션에서 같은 회원을 두 번 조회했습니다. 자연키에 대한 1차 캐시가 동작한다면, SELECT 쿼리는 한 번만 실행되어야 합니다. 결과는 SELECT 쿼리가 두 번 실행 되었습니다. 즉, 자연키에 대한 1차 캐시가 동작하지 않았습니다. 테스트2: Hibernate의 자연키 관련 API를 사용한 조회 @NaturalId 를 다루는 글들을 찾아본 결과 Hibernate가 제공하는 자연키 관련 API가 있다는 것을 확인했고, 이를 적용하기 위해 커스텀 리포지토리를 구현했습니다. Java @Repository @RequiredArgsConstructor public class CustomizedMemberRepositoryImpl implements CustomizedMemberRepository { private final EntityManager entityManager; @Override public Optional<Member> findByNaturalId(Email naturalId) { return entityManager.unwrap(Session.class) .bySimpleNaturalId(Member.class) .loadOptional(naturalId); } } 그리고, 테스트 1과 같은 방식으로 테스트를 진행하였습니다. @Test void NaturalIdApi() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); Member findMember1 = memberRepository.findByNaturalId(member.getEmail()).get(); Member findMember2 = memberRepository.findByNaturalId(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); } 결과는 SELECT 쿼리가 한 번만 실행 되었습니다. 이를 통해 자연키에 대한 1차 캐시는 @NaturalIdCache 애노테이션과 무관하게, 전용 API를 사용해야만 동작 하는 것을 확인했습니다. @NaturalIdCache의 용도 @NaturalIdCache Javadoc에는 다음과 같은 설명이 있습니다. Specifies that mappings from the natural id values of the annotated entity to the corresponding entity id values should be cached in the shared second-level cache. …중략 This annotation is usually used in combination with Cache , since a round trip may only be avoided if the entity itself is also available in the cache. 대략 “natural id와 상응하는 id에 대한 매핑을 2차 캐시에 저장 하는 애노테이션이고, 엔티티가 캐시되어있어야 하기 때문에 일반적으로 Cache 와 함께 사용 된다.”라고 해석됩니다. 즉, 1차 캐시가 아닌 2차 캐시를 위한 애노테이션입니다. 정리 2차 캐시 관련 설정 및 테스트를 마저 진행한 후 최종 정리한 내용은 다음과 같습니다. 자연키의 1차 캐시 @NaturalIdCache 애노테이션과 관련 없습니다. 자연키에 @NaturalId 만 붙이면 됩니다. 반드시 Hibernate Session의 bySimpleNaturalId() 같은 전용 API를 사용해야 적용 됩니다. 자연키의 2차 캐시 @Cache 와 @NaturalIdCache 를 함께 사용해야 동작합니다. @Cache 만 사용 시 @Id 로 조회할 때만 2차 캐시가 동작합니다. @NaturalIdCache 만 사용 시 자연키와 ID에 대한 매핑 정보는 캐시 히트 되는 걸 확인했지만, ID와 엔티티에 대한 캐시가 없어서 캐시가 적용되지 않았습니다. @Cache 와 @NaturalIdCache 모두 사용 시 ID를 통한 조회와 자연키를 통한 조회 모두 2차 캐시가 적용됩니다. 참고 자료 Hibernate6.6 공식 문서 NaturalCache javadocs baeldung: Hibernate Natural IDs in Spring Boot Spring Custom Repository 글의 오류나 부족한 내용을 알고 계신 분은 코멘트를 달아주시면 감사하겠습니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
spring 댓글 2 좋아요 12 조회수 382

인라인 스타일 리렌더링 관련

미해결

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

인라인 스타일 사용 시 style이라는 객체 prop이 매번 달라져 리렌더링이 발생한다고 해주신 부분 관련하여 질문드립니다 부모가 리렌더링되는 상황이라 이와 무관하게 자식의 리렌더링도 유발하게 될텐데요 자식 컴포넌트 자체에 memo를 적용하는 경우가 아니라면, useMemo를 쓰더라도 최적화 효과가 없을 것으로 보이는데 맞을까요?

  • react
  • redux
  • node.js
  • express
  • next.js
Eric J 댓글 2 좋아요 0 조회수 112

유형8번18분30초 질문있습니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

자식앞에 스태틱을 지웠을땐 오류가발생하는건 이해했는데 어느줄에서 발생하냐고물으면 어떻게답해야하나요?

  • python
  • java
  • c
  • 정보처리기사
alsrb4367 댓글 1 좋아요 0 조회수 36

14:21 업캐스팅문제 예시 5

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

이해를 못해서 질문하게되어 죄송합니다. 예시5번문제는 생성자 of A 생성자BB1 은 알겠는데 그다음 ACBD가 아니고 CD인 이유를 모르겠습니다

  • python
  • java
  • c
  • 정보처리기사
SUDAM 댓글 2 좋아요 0 조회수 68

웹에서 실시간 코드반영이 안돼요

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

jsx파일의 코드를 수정하면 영상처럼 바로바로 바뀌어야하는데 웹을 클릭하면 새로고침되고 클릭안하면 업뎃이 안돼요

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
댓글 1 좋아요 0 조회수 159

13:14 업캐스팅 문제예시4 질문입니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

정답이 Constructor of A ACBD가 아닌가요? 어렵네요

  • python
  • java
  • c
  • 정보처리기사
SUDAM 댓글 2 좋아요 0 조회수 54

4:07 업캐스팅 예제 해섷주신거봐도 잘 모르겠어서 질문합니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

다른 분이 질문해서 해설 올려주신거 봤는데도 저는 아직 이해를 못했습니다. car.start()는 void start-Tesia Model3시동걸기인데 car.stop()는 왜 Tesia Model3정지가 아니고 Tesia Model3정지 및 전원끄기인가요? 용기내서 질문하는거니까 귀찮으셔도 해설 부탁드립니다

  • python
  • java
  • c
  • 정보처리기사
SUDAM 댓글 2 좋아요 0 조회수 70

25분에 빈칸채우기 문제

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

I는 배열의 숫자들인거 알겠는데 J는 무엇인가요?

  • python
  • java
  • c
  • 정보처리기사
박기정 댓글 2 좋아요 0 조회수 54

app.use질문

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

강의 영상 2분에 보면 app.use('/users', require('./routes/users'));가 있는데 전 영상들에서 저런 코드는 없었는데 따로 추가해야하나요

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
댓글 1 좋아요 0 조회수 89

연산자 우선순위

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요 연산자 우선순위 강의에서 9:00쯤에 포인터(*) ++전위연산자 보다 우선순위가 높다고 하셨는데 같은 우선순위 아닌가요?

  • python
  • java
  • c
  • 정보처리기사
원피스를 찾아서 댓글 2 좋아요 0 조회수 91

스트림 중복 에러 관련 질문

미해결

김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 영한님 🙂 스트림 중복 여부의 경우 왜 컴파일 에러가 아닌 런타임 에러로 자바가 만들어진 이유를 알 수 있을까요? 챗지피티에 질문을 해봤는데 잘 이해가 되지 않아 질문드리는점 양해 부탁드립니다(_ _) 감사합니다.

  • java
  • 함수형-프로그래밍
  • lambda
  • optional
갈색곰 댓글 1 좋아요 0 조회수 110

커서 룰 추가 시, Agent Requested 가 보이지 않아요

미해결

제로베이스부터 배우는 웹개발의 개념과 바이브 코딩

옵션이 최근에 바뀐것인지 올웨이즈 어플라이 어플라이 인텔리전틀리 어플라이 스페시픽 파일 어플라이 메뉴얼리 이렇게 보여지는데 어느곳에 영상에 알려주신 규칙을 추가해야할가요

  • react
  • 웹앱
  • next.js
  • cursor
  • 인공지능(ai)
김종수 댓글 2 좋아요 0 조회수 214

npm install 명령 충돌 문제 문의

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요. 강사님 mac os에서 react 실습을 위해 npm create vite@latest 명령으로 프로젝트 생성후 npm install 명령어 사용시 아래와 같은 에러가 발생하였습니다. npm error code EEXIST npm error syscall rename npm error path /Users/iyyu/.npm/_cacache/tmp/9f07dca7 npm error dest /Users/iyyu/.npm/_cacache/content-v2/sha512/49/2e/ac0ddadc45673e1875be27d9e800ecb71c6d19b3093d78eae941b57686d6db724a1416e97affe9b66f3897f6634e1238fad6515f2d530f293983e18230d3 npm error errno EEXIST npm error Invalid response body while trying to fetch https://registry.npmjs.org/json5 : EACCES: permission denied, rename '/Users/iyyu/.npm/_cacache/tmp/9f07dca7' -> '/Users/iyyu/.npm/_cacache/content-v2/sha512/49/2e/ac0ddadc45673e1875be27d9e800ecb71c6d19b3093d78eae941b57686d6db724a1416e97affe9b66f3897f6634e1238fad6515f2d530f293983e18230d3' npm error File exists: /Users/iyyu/.npm/_cacache/content-v2/sha512/49/2e/ac0ddadc45673e1875be27d9e800ecb71c6d19b3093d78eae941b57686d6db724a1416e97affe9b66f3897f6634e1238fad6515f2d530f293983e18230d3 npm error Remove the existing file and try again, or run npm npm error with --force to overwrite files recklessly. npm error A complete log of this run can be found in: /Users/iyyu/.npm/_logs/2025-07-05T06_41_32_142Z-debug-0.log iyyu@yuilyongui-MacBookAir session05 % npm install --force npm warn using --force Recommended protections disabled. npm error code EEXIST 이전에 설치한 npm pakage 버전과 충돌 문제가 발생하는 듯 합니다. 해결 방법을 알 수 있을까요?

  • javascript
  • react
  • node.js
유일용 댓글 2 좋아요 0 조회수 347

기본 생성자 호

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

10분40초 예제에서 super을 제거했을 시 자식 생성자의 ECar는 호출시에 기본 생성자가 호출 되지 않나요 ? 제가 강의를 들으며 이해하기론 출력값이 Car() // 부모 기본 생성자 ECar() // 자식 기본 생성자 ECar(75) 라고 나와야 한다고 생각했는데 어떤 경우에서는 부모 기본 생성자만 호출되고 어떤 경우에서는 자식 기본 생성자까지 호출되는지 헷갈립니다. 예로 7분에 나오는 예제는 호출시 Car constructor(부모 기본 생성자)가 먼저 호출이 되고 ElectricCar constructor(자식 기본 생성자)가 호출이 된 반면에 위의 예제에서는 왜 부모 기본 생성자만 호출되는 이유가 궁금합니다.

  • python
  • java
  • c
  • 정보처리기사
임도형 댓글 2 좋아요 0 조회수 63

23년 2회 2:38 이해가 안가요

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

배열에 54321 입력하는 코드가 없는데 어떻게 54321이 들어 갔나요?

  • python
  • java
  • c
  • 정보처리기사
earth3280 댓글 3 좋아요 0 조회수 90

강사님께 어떻게 직접질문할수있어요??

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

강사님께 어떻게 직접질문할수있어요??

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
네이쳐 댓글 1 좋아요 0 조회수 96

const함수같은거 기초강의는 어디있나요

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

const함수같은거 기초강의는 어디있나요

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
네이쳐 댓글 2 좋아요 0 조회수 114

리덕스 참조챕터가 어딨어요? 미리듣고오라는데요

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

리덕스 참조챕터가 어딨어요? 미리듣고오라는데요

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
네이쳐 댓글 2 좋아요 0 조회수 108

인기 태그

인프런 TOP Writers

주간 인기글