묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 데이터 JPA
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
[질문 템플릿]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 existsByUserIdAndProjectId(Long userId, Long projectId)단점:이 메서드를 실행하면, project_members 테이블에 user_id, project_id FK가 있음에도 불구하고 users, projects 테이블과 불필요한 left join이 발생했습니다.실행 SQL:select pm1_0.idfrom project_members pm1_0left join users u1_0 on u1_0.id = pm1_0.user_idleft join projects p1_0 on p1_0.id = pm1_0.project_idwhere u1_0.id = ? and p1_0.id = ?fetch first ? rows only; 2. 엔티티 사용: boolean existsByUserAndProject(User user, Project project)장점:이 경우에는 조인 없이 where 절에서 FK 컬럼으로 조회되었습니다.단점:하지만, 이 메서드를 사용하려면 서비스에서 userId, projectId 를 이용하여 User와 Project를 추가로 조회해야 한다는 단점이 있습니다.실행 SQL:select pm1_0.idfrom project_members pm1_0where pm1_0.user_id = ? and pm1_0.project_id = ?fetch first ? rows only;결론: 이 경우 두 방식 중 어떤 것을 사용하는 것이 더 좋은 선택인가요?
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
수업노트
수업노트에 뭐라고 작성하신건가요? 파일이 깨진건지 핵심 문장이 안보여요
-
미해결실전! 스프링 데이터 JPA
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
[질문 템플릿]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 existsByUserIdAndProjectId(Long userId, Long projectId)단점:이 메서드를 실행하면, project_members 테이블에 user_id, project_id FK가 있음에도 불구하고 users, projects 테이블과 불필요한 left join이 발생했습니다.실행 SQL:select pm1_0.idfrom project_members pm1_0left join users u1_0 on u1_0.id = pm1_0.user_idleft join projects p1_0 on p1_0.id = pm1_0.project_idwhere u1_0.id = ? and p1_0.id = ?fetch first ? rows only; 2. 엔티티 사용: boolean existsByUserAndProject(User user, Project project)장점:이 경우에는 조인 없이 where 절에서 FK 컬럼으로 조회되었습니다.단점:하지만, 이 메서드를 사용하려면 서비스에서 userId, projectId 를 이용하여 User와 Project를 추가로 조회해야 한다는 단점이 있습니다.실행 SQL:select pm1_0.idfrom project_members pm1_0where pm1_0.user_id = ? and pm1_0.project_id = ?fetch first ? rows only;결론: 이 경우 두 방식 중 어떤 것을 사용하는 것이 더 좋은 선택인가요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
오랜만에 질문 남깁니다.
요즘 폰으로 점심시간에 틈틈히 강의 보고있는데 pc로만 질문이 가능해서 못 남겼었습니다ㅠㅠ이번 질문은 단지 제 개인적인 궁금증인데,만약 0==NULL 이렇게 비교를 하게되면 참이 되나요? equals 0==NULL이면 참인가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL 메소드와 락
JPQL 호출 시에 flush가 진행된다고 했는데, @Query 어노테이션이 달린 메소드를 호출하는 서비스 메소드에는 쓰기 락을 걸어두는게 좋을까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
외부 api 처리 방안에 대하여 궁금한 점이 있습니다.
수업 예시에서는 외부 api가 실패할 경우 스케쥴러를 활용해서 후보정 로직을 통하여 결과적 일관성을 맞추고 있습니다. 만약에 자리를 지정하는 콘서트를 위와 같이 처리할 경우 (예약은 성공, 외부 api는 실패), 후보정 로직이 동작하기 전 다른 예약 시스템에서 해당 자리를 예약한 경우 더욱 큰 문제가 발생할 수 있을 것으로 보입니다. 이러한 경우 (좌석처럼 한정된 자원을 예약하는 경우), 외부 API 실패 시 후보정 로직을 통한 비동기 처리 대신 동기적으로 처리하는 것이 올바른 방식인 것 같은데, 강사님은 어떻게 생각하시는지 궁금합니다!
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T
[질문 내용]안녕하세요. 17강에서 와일드카드 공부 중인데, 갑자기 와일드카드 예시에서 기존에 제네릭 예제에서는 사용하지 않던 문법들이 보여서요. 와일드카드를 쓰지 않는 제네릭 메서드인데도 갑자기 메서드 선언 방식이 바뀐 것 같아요.왜 기존에는 반환값으로 <T> T를 적었는데 왜 이번 강의에서는 <T>만 적는 것인지 모르겠어요.그리고 이전에는 파라미터로 T t를 넘겼는데, 왜 지금은 Box<T> box를 통째로 넘기는 것인지도 이해가 안 가요.static <T> void printGenericV1(Box<T> box) { System.out.println("T = " + box.get()); } 이전 제네릭 강의에서 사용한 방식public <T> T printAndReturn(T t) { System.out.println("animal.className: " + animal.getClass().getName()); System.out.println("t.className: " + t.getClass().getName()); return t; } 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Delivery @OneToOne
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Delivery에 있는@OneToOne(mappedBy = "delivery", fetch = LAZY) private Order order; 에서 인텔리제이가 fetch = LAZY에 노란줄이 떠서 확인해보니Specifying FetchType.LAZY for the non-owning side of the @OneToOne association will not affect the loading. The related entity will still be loaded as if the FetchType.EAGER is defined. 이런 메세지가 뜹니다.찾아보니 Lazy를해도 Eager로 동작한다는 거 같은데.. 실제로 테스트를 해보니 Eager로 동작 하고 있어서 여기에 OneToOne인데 lazy로 동작해도 상관없는걸까요?? 아니면 제가 어떤걸 놓친건지 궁금합니다
-
미해결김영한의 실전 자바 - 중급 1편
중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문
[질문 내용]여기에 질문 내용을 남겨주세요.{ private final Random random = new Random(); private int[] lottoNum; private int count; public int[] generate() { lottoNum = new int[6]; count = 0; while (count < 6) { //1-45 숫자 생성 int num = random.nextInt(45) + 1; //중복 제거 필요 if (isUnique(num, count)) { lottoNum[count] = num; count++; } } return lottoNum; } public boolean isUnique(int num, int count) { if(lottoNum[count]==num){ return false; } else {return true;} } }isUnique 메서드를 이렇게 작성하면 중복제거가 안 되는 이유가 뭘까요
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
8:00
선생님 CPU 스케줄링은 강의에 나오지 않았었는데 알아서 공부해야하는 부분인가요?
-
미해결김영한의 실전 자바 - 기본편
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용]접근제어자 - 쇼핑카트 문제에서 장바구니 상품출력 메서드인 displayItems()와 전체 가격 합을 구하는 calculateTotalPrice() 이거로 나누셨는데,나누는 이유는 유지보수(나중에 소스 수정) 하기에 좋아서 나누셨겠죠?근데 만약 안나눈다고 가정한다면.. 이런식으로 한 메서드 안에 넣어도 되는 것인지 궁금합니다.실행 결과는 똑같이 나옵니다.감사합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
어댑터에서 도메인에 직접 의존하는 경우에 대해
안녕하세요.좋은 강의 잘듣고 많이 배우고 있습니다. 좋은 강의 만들어주셔서 감사합니다.다름이 아니라, 어댑터에서 엔티티에 의존성을 가지는 것이 크게 문제되지 않는다고 말씀주신 내용에 의문이 있어 질문드립니다! 어댑터에서 도메인에 직접 의존하는 것을 막기 위해서 변환 역할을 하는 매퍼 클래스나 DTO에서 엔티티를 자기 자신으로 변환하는 로직을 가지는 것은 어떨까요? 타이트하게 룰을 잡는 케이스를 가정한다면, application layer 내부에 port가 존재할 것이고 이 port에서 return 하는 dto도 application layer일 것이고, 이 dto 안에서 Entity를 받아서 자기 자신으로 변환하는 로직을 가진다면 entity가 application 밖으로 나가지 않을 수 있지 않을까요?(controller, repository 등 마찬가지입니다)그리고 dto를 application에서 변환하는 것이 로직의 침투라고 표현하시기도 했는데, 그렇다면 provided port 역시 어댑터의 요구가 침투하는 구조라고 볼 수도 있을 것 같기도 합니다..(생각해보니 이상적으로는 계층별로 DTO를 생성하는게 맞다고 생각은 들지만, "엔티티를 반환하는 트레이드오프가 굉장히 효율적이고 정당하다"라고 말씀하신 것 같다고도 생각이 듭니다) 강의에서 항상 기술이 등장한 배경과 사상을 이해하고, 이를 바탕으로 정당하게 규칙을 스스로 정하는 것을 강조하시는 것 같습니다. 그래서 강의에서 말씀하신 내용이 비슷한 맥락으로, "절대 노출되면 안된다"라는 것에 대한 반박이라고 받아들여지긴 합니다만.. 그래도 바깥쪽으로 노출하지 않는 것이 의존성 관리 차원에서 더 좋지 않을까하는 생각에 질문드립니다!
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
printf문 문법
안녕하세요!변수 선언과 출력파트 16:19에서 printf 3번째줄에 \n와 Double사이에 콤마 있어야 되는거죠?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
기출문제의 뜻이 뭔지 궁금합니다.
스위치 케이스문 5분 문제에 대한 질문입니다. 예제를 보여주며, 기출문제입니다. 라고 하시는데 이게 실제로 예전 실기에 나왔던 문제라는 뜻인가요? 아니면 임의로 만든 시험에 나올법 한 문제인가요 아니면 필기에서 나온 문제인가요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
휴대폰으로 Q&A 남기는 법 문의
선생님 상기 제목과 같이 문의 합니다. 휴대폰으로는 질문이 불가한가요?
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.
예제에서는 도메인에 별도 PasswordEncoder 인터페이스를 정의해 사용하고 있습니다. 만약에, Member 도메인이 Spring Security의 PasswordEncoder 인터페이스를 직접 의존한다면, 구현체가 아니라 인터페이스를 참조하더라도 순수 도메인 설계 관점에서 위반으로 봐야 할까요? 저는 인터페이스 의존이라 괜찮을 수 있다고 생각했지만 AI는도메인에서는 자체 PasswordEncoder 포트만 사용하고, Spring Security PasswordEncoder는 인프라 어댑터에서 위임하는 것이 좋다.고 제안했습니다. 토비님은 어느 쪽이 더 적절하다고 보시는지, 판단 기준도 함께 듣고 싶습니다.
-
미해결김영한의 실전 자바 - 기본편
자바 기본편 - .(dot)에 관한 질문입니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]항상 퀼리티 높은 강의를 해주셔서 감사드립니다.강의를 듣던 중 궁금한 점이 생겨 질문드립니다!객체를 참조할 때는 .(dot)을 사용한다라고 하셨습니다. 그러면 해당 객체의 참조값을 담은 참조변수는 객체에 접근할 수 있는 참조값을 가지기만 한 것이고 . 을 사용해야 접근 및 멤버들을 사용할 수 있다라고 생각이 드는데 이 생각이 맞는 사고인지 궁금합니다그림을 그릴때는 객체랑 참조변수랑 참조값으로 연결되어져 있다고 생각했는데 그럼 참조변수는 객체에 접근한 게 아니다라는 의문이 자꾸 들어서 질문 남겨요!
-
해결됨2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기
[코딩 학습방법문의]
안녕하세요저는 데이터사이언스 전공자이며, 파이썬을 메인언어로 썼습니다.코딩을 직접 안하는 분야로 재직중인데, 시간이 나지 않지만, 얼마전 강의 수강을 시작했습니다.부끄럽지만, 정처기를 재수를 했는데도 떨어졌는데, 항상 코딩에서 c언어와 java가 문제인것 같습니다.25년 3회차부터 듣기시작했는데, 언어 자체가 익숙하지가 않아 다른 강사의 강의도 듣고 교재도 보고 있으나, 막상 코딩문제를 직접 풀면, 답이 다르게 나오는 경우가 많습니다특히 문제는 기출 문제중 많이 봤던 부분들은 답이나 로직 자체가 먼저 떠올라 맞추는 것도 많습니다.지금은 우선 강의를 빠르게 들으며, 2~3회 반복하는 전략을 취하려고 하나, 이게 맞는지 궁금합니다.올해 1회차에 합격이 목표인 만큼 강사님의 고견을 구합니다
-
미해결6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 4-10 2. 어려움을 겪는 부분강의 끝 부분에서 네임드 락을 위한 커넥션과 일반 트랜잭션을 처리하는 커넥션을 분리시켜서 중요한 트랜잭션 처리에 영향을 주지 않는 방법을 말씀해주셨습니다.제가 기술면접을 보면서 서킷 브레이커라는 내용을 접하게 되었는데, 이 부분이 해당 내용과 연관이 있는건지 궁금합니다.정확히는 외부 API의 호출 지연으로 인해 스레드 풀이 고갈되는 상황에서 어떻게 설계할 것인지에 대한 질문이었고, 이 과정에서 예시 키워드로 서킷 브레이커 Bulk Head가 있었습니다.또한, 실제 실무 환경에서는 커넥션 풀을 분리하기 위해 어떤 방법들을 사용하는지 궁금합니다! Q&A로 설명이 어렵다면, 키워드라도 알고 싶습니다.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
17강 포인터조작과 출제패턴 9:28
*prt_a=str;이면 ptr_a가 str의 주소값을 가지는것아닌가요? 아래보면 *(prt_a+1)을 설명해주실때 prt_a가 H를 가르키니까 +1이라서 e라고하셨는데 이부분이 이해가 잘 안됩니다 그리고 배열부분에서의 주소값과 그냥 값을 어떻게 하면 쉽게 이해하고 풀수있는지 알려주시면 좋겠습니다