inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

블로깅할 때 주의점 & 강의 장표의 질문들의 답

해결됨

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

안녕하세요. 싱글톤 하나만 들었는데도 안일하게 사용하고 있던 지식들이 채워지는 너무너무 좋은 강의입니다. 강의를 들으면서 공부하는 데 질문이 있어 남깁니다. --- 1. 저는 공부하는 자료에 대해서 가능하면 블로깅을 남기고 있습니다. 남에게 설명할 수 있는 수준이 되어야만 진정으로 이해하는 것이라고 생각하기 때문입니다. 혹시 강의 내용을 블로깅하는데 있어 제약사항이 있을까요? ex) - 강의 장표 캡쳐 불가 - 강의 장표의 질문 노출 불가 2. 동영상 뿐만이 아니라 강의 장표에 많은 질문들로 한번 더 생각할 기회를 주시는 것 같아 너무너무 감사합니다. 물론 제가 먼저 찾고 공부하는 것이 우선이지만, 제가 답을 냈을 때 비교를 할 수 있는 답이 있으면 더 좋을 것 같은데 혹시 공개되어 있을까요? 다시 한번 좋은 강의 너무너무 감사합니다!!!!

  • 블로깅
  • java
  • 디자인-패턴
Byung Hyun Choi 댓글 1 좋아요 1 조회수 465

Could not find querydslplugin 문제 (해결완료)

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 아래 처럼 에러가 뜹니다. Could not find gradle.plugin.com.ewerk.gradle.plugins:querydslplugin:1.0.10 로딩이 안되네요. buildscript { dependencies { classpath( "gradle.plugin.com.ewerk.gradle.plugins:querydslplugin:1.0.10" ) } } plugins { id 'org.springframework.boot' version '2.6.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } apply plugin : "com.ewerk.gradle.plugins.querydsl"

  • querydsl
  • JPA
  • java
  • gradle
  • java
  • spring
  • configuration
  • spring-boot
댓글 4 좋아요 2 조회수 654

CRASH에서 cause는 로그를 출력하기 위한 목적인가요?

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

강의에서는 cause가 실제로 쓰이는 부분이 없는데 용도가 무엇인지 궁금합니다. 그리고 ASSERT_CRASH에서 __analysis_assume을 쓰는 이유는 무엇인가요?

  • network
  • MMORPG
  • windows-server
cckiz153 댓글 1 좋아요 2 조회수 530

MongoDB slice test

해결됨

스프링 부트 개념과 활용

학습하시는 분들이 혹여나 오류가 있을까봐 게시판에 남겨놓습니다. spring boot 2.6버전 이상 쓰시는 분들은 테스트 코드가 오류가 날수 있습니다. Caused by: java.lang.IllegalStateException: Set the spring.mongodb.embedded.version property or define your own MongodConfig bean to use embedded MongoDB at org.springframework.util.Assert.state(Assert.java:76) at org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration.determineVersion(EmbeddedMongoAutoConfiguration.java:148) at org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration.embeddedMongoConfiguration(EmbeddedMongoAutoConfiguration.java:128) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 159 more 해결책을 찾아보니 다음과 같이 해결해줄수 있었습니다. @DataMongoTest @TestPropertySource ( properties = "spring.mongodb.embedded.version=3.5.5" ) @ActiveProfiles ( "test" ) spring boot 2.6이상버전 부터는 spring.mongodb.embedded.version은 자동 구성된 임베디드 MongoDB를 사용하도록 설정해야하는것 같습니다. 참고: https://stackoverflow.com/questions/70047380/excluding-embededmongoautoconfiguration-failed-in-spring-boot-2-6-0 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes#embedded-mongo 혹시 에러때문에 실패하시는분들이 있으시면 참고하시면 좋을것 같습니다. 그리고 교안도 수정해주신다면 감사하겠습니다. 항상 좋은강의 만들어주셔서 감사합니다.

  • spring
  • java
  • spring-boot
양성빈(Robert) 댓글 1 좋아요 1 조회수 911

setter 제거에 관한 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

선생님 언제나 좋은강의 감사드립니다! 선생님께서는 실무에서 왠만하면 셋터를 전부 제거 하신다고 알려주셨는데요. Book 클래스에서 Setter를 제거하려고 시도하다가 나온 의문점이 있어 질문드립니다. 밑의 코드와 같이 작성하였는데요. 이 경우 author와 isbn필드로 인해 어쩔수없이 private setter를 두개 둘수밖에없었습니다. 이와같이 private setter를 두는것이 옳을지, 필드를 static으로 바꾸는게 좋을지에 대한 질문인데요 Book 객체의 경우 필드가 두개밖에 없어서 static으로 바꿔줘도 상관없을거라고 생각은하는데 실무에서는 무수히 많은 필드가 있는 객체가 있을경우 static 필드 vs private 셋터중 어떤게 옳은 방법인지 궁금해서 질문드립니다. @Entity @DiscriminatorValue ( "B" ) @Getter @NoArgsConstructor ( access = AccessLevel . PROTECTED ) public class Book extends Item { @Setter ( value = AccessLevel . PRIVATE ) private String author ; @Setter ( value = AccessLevel . PRIVATE ) // static으로 만드는것을 고려? private String isbn ; public static Book createNewBook ( String author , String isbn , String name , int price , int quantity ) { Book book = new Book () ; book . setAuthor ( author ) ; book . setIsbn ( isbn ) ; book . setName ( name ) ; book . setPrice ( price ) ; book . setStockQuantity ( quantity ) ; return book ; } }

  • spring
  • java
  • 웹앱
  • JPA
  • spring-boot
const.takeo 댓글 1 좋아요 2 조회수 640

변경감지로 코드를 변경할 때

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

지금 예제에서는 Book만 수정을 하니 만약에 Book만 가지고 있는 멤버인 ISBN과 작가를 수정하려면 이렇게 케스팅 해주는 방법밖에 없을까요? updateItem 메소드 하나로 item을 상속 받는 구현체들인 Book, Album, Movie를 업데이트 하는 방법이 있는지 궁금하고 혹은 있더라도 그것 보다는 각각을 따로 Dto를 만들어서 updateBook 이런식으로 하는게 더 좋나요? 저는 일단 다운캐스팅으로 Dto 따로 안만들고 했습니다.

  • springboot
  • spring
  • java
  • spring-boot
  • JPA
  • 웹앱
skj3232 댓글 1 좋아요 1 조회수 312

Category테이블 관련 질문이요

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

Category테이블 구현 테스트를 해보려고 하는데요 public class Category { @Id private Long id; private String name; @ManyToOne @JoinColumn(name="PARENT_ID") private Category parent; } Category 저장테스트 해보려고하는데 parent의 동작이 어떻게 되는지 이해가 되지 않습니다.

  • 웹앱
  • spring
  • JPA
  • java
  • spring-boot
yamyam_Y 댓글 1 좋아요 0 조회수 262

8:13 질문

미해결

실전! Querydsl

안녕하세요 영한님 감사합니다 ^_^ 08:13 보시면 em.flush를 해주시는데 필수인건가요 ?? flush을 쓰지 않아도 자동으로 나가는걸로 알고있습니다. clear만 해도 될까요?? 실험결과 clear만 써주면 되긴합니다만 flush를 별도로 또 호출해줘야 더 안전한 코드인가요??

  • java
  • JPA
H K 댓글 1 좋아요 0 조회수 343

@Param 생략

해결됨

실전! 스프링 데이터 JPA

@EntityGraph ( attributePaths = { "team" }) List < Member > findEgByUsername ( String username ) ; 일 때와, @EntityGraph ( attributePaths = { "team" }) List < Member > findEgByUsername ( @Param ( "username" ) String username ) ; 일 때 결과 값이 똑같이 나오는걸 확인했는데, @Param은 직접 JPQL에 "~~ = :username"을 지정하지 않는 이상, 쿼리 메소드 이름 기능으로 사용할 때, 생략해도 되고 생략 안해도 되는 게 맞나 확인차 질문드립니다.

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

기본옵션의 스프링에서의 영속성 컨택스트가 1개인지가 궁금합니다.

미해결

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

스프링 같은 컨테이너 환경에서 클라이언트 요청별로 영속성 컨택스트가 생기는지가 궁금합니다. (엔티티 매니저가 아닙니다.) 8p 강의자료에 보면 엔티티 매니저와 영속성 컨택스트의 관계는 N:1개라고 설명을 해주셨는데요. 이부분은 스프링을 설명해야하니 일단 넘어가주셨어요. 11p 강의 자료부터는 1:1 관계로 설명을 해주셔서 그런지 영속성 컨택스트 = Entity Manager로 설명을 해주시더라구요. 여기서 의문의 생긴점이 하나 생겼는데요, 1차캐시의 위치를 보면 EntityManager 안에 위치하던데 그러면 스프링을 기준으로 생각할때, 영속성 컨택스트 앞에서 여러개의 엔티티 매니저를 만들며 1차캐시를 N개 만드는것인지 (엔티티 매니저 개수만큼), 아니면 영속성 컨택스트( 엔티티 매니저가 아닌, 강의자료 8p 에 있는 우측 엔드포인트)도 여러개 생기는건지가 궁금합니다. 논리적인 개념인 영속성 컨택스트를 뭐를 기준으로 보냐는 관점 차이일까요?

  • JPA
  • java
댓글 1 좋아요 0 조회수 240

Accept-Language 다중 언어 지원 서버 관련 문의

해결됨

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요 영한님 항상 좋은 강의 감사드립니다 Accept-Language를 적용하게되면 요청시 서버가 클라이언트가 요청한 언어에 최대한 맞는 언어로 응답을 보낸다고 말씀하셨는데 이 때, 다중 언어 지원 서버라고 하는 것은 HTML Language가 EN, KO로 모두 작성되어있어서 백엔드(웹프레임워크)단에서 언어에 따른 HTML 취사선택이 가능하도록 구현되어있을 경우를 이야기하는 것인지 궁금합니다. 연말이 다가오고 있습니다 코로나 확진자도 많아지는데 질문 답변해주시는 서포터님들께 항상 감사드리고 코로나 조심하시고 연말 따뜻하고 건강하게 보내시길 바라겠습니다!

  • network
김윤식 댓글 1 좋아요 0 조회수 383

3 handshake(with socket library) 관련 질문있습니다.

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

강의가 너무 유익해서 시간가는줄 모르고 잘 보고있습니다. 좋은 강의 만들어주셔서 대단히 감사합니다. 하지만 강의를 보다가 이해가 잘 안되는 부분이 있어서 질문 드립니다. 강의시간이 1:50 쯤의 그림을 보면서 "socket 라이브러리를 통해 전달" 한다는 것이 이해가 잘 되지 않았습니다. 이 말을 저는 socket 라이브러리가 알아서 3handshake를 해서 연결상태를 보장받고 이후 TCP/IP 패킷을 생성하고 http 메시지를 담아 보내는 것으로 이해했습니다. 그런데 이 과정 중 3handshake와 socket library에 모호한 점이 있었습니다. 1-1. socket 라이브러리에서 3 hand shake 를 그림에서의 과정과 다르게 별도로 진행하여 연결이 되었다고 판단되면, 패킷 생성하고 네트워크 인터페이스 레이어를 지나 인터넷을 통해 서버로 전달. 즉, http 통신 프로세스와는 별개로 따로 서버와 syn / syn+ack / ack 만 주고받는 통신진행을 진행하는지 1-2. 아니면 전체 프로세스(강의에서 제공한 그림처럼)를 http 메세지와 syn이 포함된 TCP/IP 패킷을 생성하여 3번( syn / syn+ack / ack) 진행하는지 만약 1-1번 처럼 socket 라이브러리에서 따로 서버측과 syn / syn+ack / ack 을 통신한다면, 2-1. 최초 서버로 http 요청시 socket 라이브러리에서 3handshake를 실패시 http 요청 자체가 보내지지 않는건지. 그렇게 되면 클라이언트는 어떠한 응답도 못받는 상태가 되는건가요? 2-2. socket 라이브러리에서 3handshake를 하는 과정도 동일하게 TCP/IP 패킷을 생성하는지, 단순히 syn / syn+ack / ack 만 보내는지 궁금합니다. 3-1. 마지막으로 궁금한 것은 socket 라이브러리가 이런 것을 담당한다면 TCP를 이용한다면 반드시 socket 라이브러리를 써야하는 건지 궁금합니다. socket 라이브러리도 대체 가능한지 궁금합니다.

  • 3handshake
  • network
  • socket
  • socketlibrary
hyery95 댓글 1 좋아요 2 조회수 603

주문 submit 시에 save the transient instance before flushing 에러가 발생합니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 에러 메시지 내용은 org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.member -> jpabook.jpashop.domain.Member; 입니다. Member와 Order 클래스의 영속성 전이 문제인 것 같아서 각각 cascade = CascadeType. ALL 을 추가해주면 에러메시지는 사라지지만 주문내역에서 회원명이 나오지 않습니다ㅠㅠ 또 회원목록에서 등록하지 않은 회원이 생성됩니다. 그래서 일단 cascade 추가 전 Order 클래스와 Member 클래스의 코드 첨부합니다. 구글 드라이브 주소입니다. https://drive.google.com/file/d/1j0oevd3vhsXt8e1LwuuVgS7fu6RLY8yN/view?usp=sharing

  • JPA
  • spring-boot
  • 웹앱
  • spring
  • java
채한나 댓글 1 좋아요 1 조회수 461

안녕하세요 영한님 스프링 부트 관련 질문 드립니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

이번 강의를 들으면서 H2데이터베이스가 아닌 MySQL에 적용을 해보고 싶어서 시도를 해봤는데요, 도커에 MySQL을 띄우고 실행을 하였는데 궁금증이 생겨 질문 드립니다. 스프링 부트의 application.properties에 적는 MySQL환경 설정과 docker-compose.yml에 적는 MySQL환경 설정을 둘다 입력해 줘야 하나요?? 한곳만 입력해줘도 괜찮은가요? 좋은 강의 감사합니다 ㅎㅎ

  • java
  • JPA
  • spring-boot
  • spring
  • 웹앱
haru 댓글 1 좋아요 0 조회수 203

DNS서버에 조회 해서 웹브라우저에 받아오는 일련의 과정에 대해

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요. 너무 잘보고있는데요. 한가지 DNS서버에 조회 해서 웹브라우저에 받아오는 일련의 과정이 조금 헷갈려서 질문드립니다. 1.웹브라우저에서 구글서버로 접속하기위해 1) 먼저 DNS에 접속하여 IP주소와 port정보를 찾아냅니다. 2)그후에 DNS서버로부터 받아온 정보로 HTTP요청 메시지를 생성하는데요. 그럼 https://www.google.com:443/ 까지는 웹브라우저에서 DNS서버를 가서 조회를 해서 IP주소와 port 정보를 조회하여 그 정보만 요청한 웹 브라우저로 넘겨주게되고, 웹브라우저는 다시 DNS서버로 부터 받은 IP주소와port정보를 포함하여 HTTP요청 메시지를 만드는데 그 안에는 path뒤 부터인 /search?q=hello&hl=ko가 구글 서버에 접속해서 관련 정보를 받아온다고 생각하면되는게 맞나요? 그런데 이게 맞다면 1분11초 HTTP메시지에 Host는 www.google.com이고, 또 따로 패킷에 받아온 구글 IP주소 를 to에다가 200.200.200.2로 보내는게 맞는지가 궁금합니다. (제가 생각했을때는 DNS서버로 부터 받아온 IP주소를 Host에다가 200.200.200.2라고 적으면 된다고 생각했었는데, 다시 www.google.com이라고 적어놓으셔서 그럼 HTTP요청 메시지 패킷을 전송할때는 www.google.com와 IP주소 200.200.200.2가 모두 필요한걸까? 라는 의문이 들어서요.) 2. search가 path인데요. 그럼 예를들어 구글 서버 자체에 serarch라는 디렉토리가 있는건가요? 그래서 그 serarch안에 q=hello&hl=ko의 해당정보가 들어있는건가요?... 3. DNS서버도 따로 존재? 한다고 들었는데, 이게 또 SK, LG, KT 등 통신사에 등록이 되어있다고 들었습니다. 혹시 SK의 경우 DNS서버홈페이지같은거는 어디서 알 수 있을까요? 한 번 들어가서 구경하고 싶은데.. 검색해도 안나와서요. 3-1 또 DNS서버로 요청할때도 3way handshake로 동작해서 패킷단위로 던져지는게 맞나요? 4. 제가 생각했을때 http https ftp smtp 마다 호칭을 HTTP요청메시지 or HTTPS요청메시지 or FTP요청메시지 or SMTP요청메시지 이런식으로 각각 따로 불려야 될 것 같은데.. 이거를 그냥 어떤 프로토콜을 사용하던지 'HTTP요청메시지' 라고 통용해서 사용하는 건가요? 5. 1분49초 시작부터 , 이해가 잘 가지않는데요. 그럼 지금 이 HTTP메시지 전송과정 전에 이미 DNS서버를 가서 IP주소랑 port번호를 찾아 온후! 진행되는 과정이라는 가정하에 IP주소랑 port번호를 찾았다고 말씀하시는거죠? 그리고 1)소켓라이브러리를 통해서 먼저 찾은IP주소와port번호로 2)syn- syn ack - ack 해서 (가상)구글 서버와 연결을 한 후 3) OS계층인 TCP/IP 로 전달을 합니다. 그다음 패킷을 씌운후 인터넷망으로 던져진다! 순서과정을 이렇게 이해하면 될까요?

  • DNS서버
  • network
  • IP주소
EUNKYUNG JUNG 댓글 1 좋아요 1 조회수 786

intellij가 error를 잡지 못합니다....

미해결

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

[질문 내용] 아래 스크린샷과 같이 intellij 에서 @Service @Repository 어노테이션을 달지 않았음에도 Controller에서 에러를 표시하지 않습니다.. 실행시에는 에러를 잡아내서 강의 진행에는 무리가 없으나, 혹시 이유를 알고싶어서 질문합니다... 1. 아직 @Service 를 추가하기 전이나, 2. intellij가 error 경고를 띄우지 않음 3. 실행시에는 에러를 잘 잡아냅니다.

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

강의 커리큘럼 관련되서 질문 드립니다.(커리큘럼 관련되서 질문할 곳을 찾지 못해서 ㅠㅠ 여기다 올린점 양해 부탁드려요 ㅠ)

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요. 커리큘럼 관련되서 질문드리고자 이렇게 글 올립니다. 저는 일단 C++을 사용하는데 있어 큰 무리없이 사용하는 편입니다. (modern c++포함) 반면 C#은 거의 모르는 상태인데요, 강사님 커리큘럼중에 C#을 이용해서 MMORPG를 만드는 커리큘럼도 있던데 아래처럼 병행해서 커리큘럼을 짜도 될지 궁금해서 문의 드립니다. [C#과 유니티로 만드는 MMORPG게임 개발시리즈] Part1, Part3, Part7, Part9 만 듣고, [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4 이렇게 들어서 일단 Unreal 로 연동하는 강의가 나올때까지, 유니티 2D게임을 C++게임서버에 연동해보고 싶은데요, 굳이 C# 게임서버 제작 강의를 들어야할 필요가 있을까요?? C#으로 게임서버를 만들어야겠다는 생각이 들면 듣겠지만, 지금은 우선 게임 클라이언트 자체를 서버에 연동시키는것(구체적으로 맵을 어떻게 서버에서 처리하고, 스킬이나 hit 판정을 어떤식으로 하는지에 대한 것들)을 목표로 하고 있는데, C#게임서버 강의랑 C++ 게임서버 강의가 겹치는 부분이 많아서 C#게임서버 강의를 통해 들어야할지 고민이 됩니다. 결론으로 C# 강의 Part1, Part3, Part7, Part9 와 C++강의 Part4 이렇게 병행하는데, 무리 없이 커리큘럼을 수행할 수 있는지 궁금합니다. 긴글 읽어주셔서 감사드리며, 항상 좋은 강의 올려주셔서 감사합니다.!!!

  • 커리큘럼
  • network
  • MMORPG
  • windows-server
grallex00 댓글 1 좋아요 0 조회수 194

changeTeam의문점

미해결

실전! Querydsl

안녕하세요 영한(god)님 질문이 하나있습니다. 지금 changeTeam 을 이용하여 Member의 Team을 바꿔주시는데 이게 em.flush ,clear 하고 조회를 해오면 더티체킹으로 Member의 Team이 잘 바뀌어서(update) 조회됩니다. 근데 문제는 자바 컬렉션에서의 문제입니다 team.getMembers().add( this ) ; 이 결과로 (팀)양쪽에 같은 맴버가 생기는거 같습니다.

  • JPA
  • java
H K 댓글 2 좋아요 3 조회수 384

spring boot profile 관련 내용

해결됨

스프링 부트 개념과 활용

수강자 분들이 헷갈리시는 분이 있어서 질문글에 남겨드립니다. spring boot 프로파일 설정중에 spring.profiles.include = myprofile 이 부분에서 에러가 많이 나고 저도 똑같은 경험을 해서 찾아보다가 spring boot 2,4버전 이후부터는 다음과 같이 기술한다고 합니다. spring.profiles.group."myprofile"

  • spring
  • java
  • spring-boot
양성빈(Robert) 댓글 1 좋아요 1 조회수 362

10:40에 id값이 어떻게 1이 나오는건가요?

해결됨

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

안녕하세요! 다른 분들도 이 부분에 대해서 질문을 하셨고 답변을 봤지만, 여전히 이해가 안돼서 다시 한번 질문을 드립니다. ㅠㅠ 1 em.persist(member) ; 2 3 em.flush(); 4 em.clear(); 5 6 em.getReference(Member.class, member.getId()); 7 8 System.out.println("findMember.id = " + findMember.getId()); em.clear()를 하면 1차 캐시가 전부 비워지고, GeneratedValue로 생성된 id값은 DB에 저장되어 있습니다. em.getReference(id)를 하는 시점에 가짜 프록시 객체가 영속성 컨텍스트에서 관리가 된다고 하셨는데, 여기서 가짜 프록시 객체는 id값을 어떻게 1로 가지고 있는 건가요?? 결국 1이라는 값을 알기 위해서는 DB에서 가져와야 하는게 아닌가요?? 아니라면 혹시 자동으로 SEQUENCE 전략으로 변경되어 메모리에 디폴트로 50까지 가지고 있기 때문에 1을 출력해주는 것일까요?

  • java
  • JPA
lch9502 댓글 1 좋아요 0 조회수 255

인기 태그

인프런 TOP Writers

주간 인기글