학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 최신 버전인 SpringBoot4 + Hibernate7 을 사용해서 강의를 듣고 있습니다. 이 버전에서는 (Hibernate 모듈 등록 X + 프록시 직접 초기화 X] 상태에서 API 응답으로 엔티티를 곧바로 반환하게 되면, 강의 내용처럼 오류(예외)가 나지 않고, Jackson이 json을 만드는 과정에서 getter 등을 호출해서 프록시 객체들을 자동으로 초기화(로딩)시키는 것처럼 보이네요. 응답 결과에서도 모두 출력되고요 (물론, @JsonIgnore 없으면 무한루프는 발생) 그래서 강의 내용처럼 오류가 나도록 하는 방법을 한참 찾다가 현재 버전에서 Hibernate 모듈을 등록하는 방법을 발견해서 공유해봅니다. (메뉴얼에도 없길래) [등록 방법] 1. 라이브러리 등록 implementation 'tools.jackson.datatype:jackson-datatype-hibernate7' 2. 빈 등록 @Bean public Hibernate7Module hibernate7Module() { Hibernate7Module module = new Hibernate7Module(); // module.configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true); return module; }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. ============================= 안녕하세요. Spring Data JPA에서 연관관계 필드에 대한 exists 메서드 사용 시, 아래 두 방식 중 어떤 방식이 더 적절한지 궁금합니다. ProjectMember 엔티티는 아래처럼 Project , User 와 연관되어 있습니다. public class ProjectMember { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "project_id", nullable = false) private Project project; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user; } 사용자가 특정 프로젝트에 포함되어 있는지 확인하려고 할 때, 아래 두 가지 방식을 테스트해봤습니다. 1. 식별자 사용 : boolean existsBy UserId And ProjectId (Long userId, Long projectId) 단점: 이 메서드를 실행하면, project_members 테이블에 user_id , project_id FK가 있음에도 불구하고 users , projects 테이블과 불필요한 left join이 발생 했습니다. 실행 SQL: select pm1_ 0.id from project_members pm1_0 left join users u1_0 on u1_ 0.id = pm1_0.user_id left join projects p1_0 on p1_ 0.id = pm1_0.project_id where u1_ 0.id = ? and p1_ 0.id = ? fetch first ? rows only; 2. 엔티티 사용 : boolean existsBy User And Project (User user, Project project) 장점: 이 경우에는 조인 없이 where 절에서 FK 컬럼으로 조회 되었습니다. 단점: 하지만, 이 메서드를 사용하려면 서비스에서 userId, projectId 를 이용하여 User와 Project를 추가로 조회 해야 한다는 단점이 있습니다. 실행 SQL: select pm1_ 0.id from project_members pm1_0 where pm1_0.user_id = ? and pm1_0.project_id = ? fetch first ? rows only; 결론: 이 경우 두 방식 중 어떤 것을 사용하는 것이 더 좋은 선택인가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. ============================== 안녕하세요. Spring Data JPA에서 연관관계 필드에 대한 exists 메서드 사용 시, 아래 두 방식 중 어떤 방식이 더 적절한지 궁금합니다. ProjectMember 엔티티는 아래처럼 Project , User 와 연관되어 있습니다. public class ProjectMember { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "project_id", nullable = false) private Project project; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user; } 사용자가 특정 프로젝트에 포함되어 있는지 확인하려고 할 때, 아래 두 가지 방식을 테스트해봤습니다. 1. 식별자 사용 : boolean existsBy UserId And ProjectId (Long userId, Long projectId) 단점: 이 메서드를 실행하면, project_members 테이블에 user_id , project_id FK가 있음에도 불구하고 users , projects 테이블과 불필요한 left join이 발생 했습니다. 실행 SQL: select pm1_ 0.id from project_members pm1_0 left join users u1_0 on u1_ 0.id = pm1_0.user_id left join projects p1_0 on p1_ 0.id = pm1_0.project_id where u1_ 0.id = ? and p1_ 0.id = ? fetch first ? rows only; 2. 엔티티 사용 : boolean existsBy User And Project (User user, Project project) 장점: 이 경우에는 조인 없이 where 절에서 FK 컬럼으로 조회 되었습니다. 단점: 하지만, 이 메서드를 사용하려면 서비스에서 userId, projectId 를 이용하여 User와 Project를 추가로 조회 해야 한다는 단점이 있습니다. 실행 SQL: select pm1_ 0.id from project_members pm1_0 where pm1_0.user_id = ? and pm1_0.project_id = ? fetch first ? rows only; 결론: 이 경우 두 방식 중 어떤 것을 사용하는 것이 더 좋은 선택인가요?
(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
💡 수강생 안내 사항 (커뮤니티 가이드) 학습 관련 질문 : 구체적으로 적을수록 정확한 답변을 받을 수 있습니다. 작성 팁 : 마크다운과 단축키를 활용하면 글을 더 편리하게 작성할 수 있습니다. 사전 검색 : 질문을 남기기 전, 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해 보세요. 커뮤니티 매너 : 서로 예의를 지키며 존중하는 분위기를 함께 만들어가요. 서비스 문의 : 인프런 서비스 관련 문의는 1:1 문의하기 를 이용해 주세요. 안녕하세요. 수강생입니다. ^^ 노션에 올려놓으신 예제소스파일들이 상당히 중요한 기준이 되는 자료들인데 윈도우 사용자들은 한글이 들어있는 파일들이 모두 UTF-8문제로 텍스트가 다 깨져서 보입니다. 윈도우환경에서 수강하는 수강생들을 위해 UTF-8 적용된 예제소스파일들을 올려주실 수 있으신지요?
수업 예시에서는 외부 api가 실패할 경우 스케쥴러를 활용해서 후보정 로직을 통하여 결과적 일관성을 맞추고 있습니다. 만약에 자리를 지정하는 콘서트를 위와 같이 처리할 경우 (예약은 성공, 외부 api는 실패), 후보정 로직이 동작하기 전 다른 예약 시스템에서 해당 자리를 예약한 경우 더욱 큰 문제가 발생할 수 있을 것으로 보입니다. 이러한 경우 (좌석처럼 한정된 자원을 예약하는 경우), 외부 API 실패 시 후보정 로직을 통한 비동기 처리 대신 동기적으로 처리하는 것이 올바른 방식인 것 같은데, 강사님은 어떻게 생각하시는지 궁금합니다!
(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
강의를 수강하다가 멈추고 클로드코드 다음번에 다시 시작하려고할때, 현재 강의를 보고 진행한 내용의 저장?하는 방법과 다음번 강의로 중간부터 다시 클로드코드 켜고, 연속적으로 시작하는 방법 문의드립니다. 감사합니다. 💡 수강생 안내 사항 (커뮤니티 가이드) 학습 관련 질문 : 구체적으로 적을수록 정확한 답변을 받을 수 있습니다. 작성 팁 : 마크다운과 단축키를 활용하면 글을 더 편리하게 작성할 수 있습니다. 사전 검색 : 질문을 남기기 전, 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해 보세요. 커뮤니티 매너 : 서로 예의를 지키며 존중하는 분위기를 함께 만들어가요. 서비스 문의 : 인프런 서비스 관련 문의는 1:1 문의하기 를 이용해 주세요.
안녕하세요 강사님 강좌 잘 보고 있습니다. 다름 아니라 20강에 PhpMyAdmin 접속 경우 도메인 치면 아무나 들어올수 있어서 nginx에서 자기집 ip로 접속 제한 걸어두던데... 이게 집 IP가 바뀌면 접속이 안되니 그때는 다시 nginx host 설정에서 바뀐 IP로 바꿔 줘야하는거죠? 노트북으로 작업해서 여기저기서 작업하려고 해서 문의 드려 봅니다.