안녕하세요 영한님 감사합니다 ^_^ 08:13 보시면 em.flush를 해주시는데 필수인건가요 ?? flush을 쓰지 않아도 자동으로 나가는걸로 알고있습니다. clear만 해도 될까요?? 실험결과 clear만 써주면 되긴합니다만 flush를 별도로 또 호출해줘야 더 안전한 코드인가요??
@EntityGraph ( attributePaths = { "team" }) List < Member > findEgByUsername ( String username ) ; 일 때와, @EntityGraph ( attributePaths = { "team" }) List < Member > findEgByUsername ( @Param ( "username" ) String username ) ; 일 때 결과 값이 똑같이 나오는걸 확인했는데, @Param은 직접 JPQL에 "~~ = :username"을 지정하지 않는 이상, 쿼리 메소드 이름 기능으로 사용할 때, 생략해도 되고 생략 안해도 되는 게 맞나 확인차 질문드립니다.
안녕하세요? 더보기 버튼을 클릭하면 아래쪽으로 20개씩 영화 리스트가 쭉 뻗어나가는 기능은 정상적으로 작동합니다. 그런데 더보기를 누를 때마다 저런 경고메세지가 나옵니다. 다른분들 글을 보고 참고해서 MainMovieImage에 초기값으로 null을 넣어주었고, 선생님 코드와 비교해봐도 다른점이 없습니다. 그리고 저는 웹 페이지를 처음 로드했을 때는 아무런 에러가 없다가, loadMore 버튼만 누르면 이러는데..어떻게 해결해야 할까요 ㅠ
스프링 같은 컨테이너 환경에서 클라이언트 요청별로 영속성 컨택스트가 생기는지가 궁금합니다. (엔티티 매니저가 아닙니다.) 8p 강의자료에 보면 엔티티 매니저와 영속성 컨택스트의 관계는 N:1개라고 설명을 해주셨는데요. 이부분은 스프링을 설명해야하니 일단 넘어가주셨어요. 11p 강의 자료부터는 1:1 관계로 설명을 해주셔서 그런지 영속성 컨택스트 = Entity Manager로 설명을 해주시더라구요. 여기서 의문의 생긴점이 하나 생겼는데요, 1차캐시의 위치를 보면 EntityManager 안에 위치하던데 그러면 스프링을 기준으로 생각할때, 영속성 컨택스트 앞에서 여러개의 엔티티 매니저를 만들며 1차캐시를 N개 만드는것인지 (엔티티 매니저 개수만큼), 아니면 영속성 컨택스트( 엔티티 매니저가 아닌, 강의자료 8p 에 있는 우측 엔드포인트)도 여러개 생기는건지가 궁금합니다. 논리적인 개념인 영속성 컨택스트를 뭐를 기준으로 보냐는 관점 차이일까요?
안녕하세요 제로초님 완강 후 덕분에 3군데에서 면접을 보게되어서 복습겸해서 작게나마 오픈api 활용해 영화정보 보여주는 프로젝트를 진행중 입니다. redux 셋팅을 마치고 메인 페이지에서 아래처럼 dispatch를 하고있는데 여기는 사가입니다. 이렇게요.. 어느부분이 문제인지 찾기 위해 dispatch를 하지 않고 그냥 메인페이지에서 axios호출을 하면 정상작동을 합니다. effect 콘솔도 한번만 찍히구요.. 그렇게 4시간정도 찾아보면서 수정을하다가 그럼 결론은 saga의 문제구나를 깨닫긴했는데 도대체 어디가 문제인지 알 수가 없네용 강의 프로젝트가 아니긴 하지만 한번만 확인해 주실 수 있을까용?? 전체코드가 필요할 수 도 있을 것 같아서 깃헙주소도 남겨 놓겠습니다! 바쁘실테지만,, 미리 감사합니다! 취업후기도 꼭 남길게요😄 https://github.com/psw0962/movie-reviews
[질문 템플릿] 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
이번 강의를 들으면서 H2데이터베이스가 아닌 MySQL에 적용을 해보고 싶어서 시도를 해봤는데요, 도커에 MySQL을 띄우고 실행을 하였는데 궁금증이 생겨 질문 드립니다. 스프링 부트의 application.properties에 적는 MySQL환경 설정과 docker-compose.yml에 적는 MySQL환경 설정을 둘다 입력해 줘야 하나요?? 한곳만 입력해줘도 괜찮은가요? 좋은 강의 감사합니다 ㅎㅎ
[질문 내용] 아래 스크린샷과 같이 intellij 에서 @Service @Repository 어노테이션을 달지 않았음에도 Controller에서 에러를 표시하지 않습니다.. 실행시에는 에러를 잡아내서 강의 진행에는 무리가 없으나, 혹시 이유를 알고싶어서 질문합니다... 1. 아직 @Service 를 추가하기 전이나, 2. intellij가 error 경고를 띄우지 않음 3. 실행시에는 에러를 잘 잡아냅니다.
포스트맨을 이용하여 작성 후, 개발자 메뉴에서 콘솔을 봤을 때, 강사님께서 올려주신 것 처럼 Array(3) 아래 데이터가 나열되지 않고, 다음과 같이 하나의 텍스트?로만 표현이 됩니다. 진행중인 스크립트와 postmon도 이상 없이 따라하고 있었습니다. 혹시 해당 이슈에 대해서 팁이나 조언 부탁드립니다
안녕하세요 영한(god)님 질문이 하나있습니다. 지금 changeTeam 을 이용하여 Member의 Team을 바꿔주시는데 이게 em.flush ,clear 하고 조회를 해오면 더티체킹으로 Member의 Team이 잘 바뀌어서(update) 조회됩니다. 근데 문제는 자바 컬렉션에서의 문제입니다 team.getMembers().add( this ) ; 이 결과로 (팀)양쪽에 같은 맴버가 생기는거 같습니다.
수강자 분들이 헷갈리시는 분이 있어서 질문글에 남겨드립니다. spring boot 프로파일 설정중에 spring.profiles.include = myprofile 이 부분에서 에러가 많이 나고 저도 똑같은 경험을 해서 찾아보다가 spring boot 2,4버전 이후부터는 다음과 같이 기술한다고 합니다. spring.profiles.group."myprofile"
안녕하세요! 다른 분들도 이 부분에 대해서 질문을 하셨고 답변을 봤지만, 여전히 이해가 안돼서 다시 한번 질문을 드립니다. ㅠㅠ 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을 출력해주는 것일까요?
NotEnoughStockException에서 오버라이드를 해서 그냥 놔두는 이유를 조금만 더 명확하게 설명 부탁드려도 될까요? 그리고 5개를 오버라이드를 했는데 오버라이드를 할 수 있는 메소드들은 많이 있는데 그중에 어떤 메소드들을 오버라이드를 하는지, 그리고 그 메서드들을 오버라이드를 하는 이유와 마지막 한개는 필요가 없는 이유를 조금만 더 명확하게 알고 싶습니다.
API가 뭔지는 알겠습니다. "객체(DTO)에 있는 값들을 JSON으로 반환하는 컨트롤러" 근데 이것을 왜 쓰는지는 감이 안옵니다. 만약 조회의 결과를 JSON으로 클라이언트에 반환한다 치면, 조회값이 엄청 많으니까 JSON으로 "축약"해서 보낸다는 느낌으로 이해 했는데 맞나요..? 클라이언트에서 서버로 왜 JSON으로 보내는지, 반대의 경우는 왜 그러는지 감이 안잡힙니다.
cascade를 사용하는곳이 FK 가 없는곳이라고 생각하면 맞을까요? FK가 없는곳이면 부모Entity라고 생각을 하면 될 것 같은데. 여기서 부모라고하면 변경되는 주체(?)를 표현한 것인데. 예를들어 게시판과 첨부파일 테이블이 있다고 한다면 게시판이 부모Entity이고, 첨부파일이 자식Entity라고 생각했을때(게시글을 지우면 첨부파일도 같이 지워지는 구조이기 때문에.. 첨부파일을 지운다고 해서 게시글이 같이 지워진다는 보장은 없으니까요) 이럴 경우에는 게시판Entity에 cascade를 설정하는게 맞는 것 같은데 제가 이해하고 있는게 맞는걸까요?
테이블을 생성할 때 설명중 객체는 타입이 있어서 명확하게 member.id를 구분할 수 있는데 테이블에서는 구분하기가 어렵고 조인등의 쿼리를 짤 때도 불편하다고 해서 member_id로 잡아주신다고 하셨는데.. 이런 내용이 PK나 FK 에만 해당이 되는건지 궁금합니다. 예를들어 member라는 테이블에 member_id, name이라는 필드가 있고, item이라는 테이블에도 item_id, name이라는 필드가 있을경우 name이라는 필드명이 겹치는데 이럴 경우에는 테이블 구조를 짤 때 그냥 name으로만 하시는지 아니면 member_name, item_name으로 하시는지 궁금합니다. 강의를 쭉~~ 들으면서 드는 생각은 PK, FK와 관계되는것들(다른 테이블과 직접적인 연관관계를 맺고있기 때문에)만 구분을 하기 위해서 member_id, item_id로 만드는 것 같은데 제가 이해한대로 실무에 적용을 해도 문제가 없는지 궁금합니다.