묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
team.members.size 쿼리 사용 시 디비 데이터가 삭제되는 현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에 나온 대로 t.members.size를 가져오는 쿼리를 작성 후 실행해봤습니다. 하지만 결과가 나오지 않고, h2디비에 들어가서 값을 확인해보니 값이 모두 지워져있습니다. jpql쿼리를 작성하고 결과를 가져오는 코드를 주석으로 처리하고 돌려보면, 값이 제대로 들어가있는 것을 확인할 수 있었습니다.단순히 쿼리를 날리면서 디비에 있는 값이 모두 삭제되는 현상은 아닌 것 같은 게, team.teamname처럼 team의 상태필드를 셀렉트해오는 쿼리문을 날리면, 정상작동되며 디비의 값도 사라지지 않습니다. 대체 어떤 이유 때문에 컬렉션 값 연관 필드를 타고 들어가면 디비의 값이 사라지는 건가요?select team.teamName from Team t 하는 경우package jpql; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; import java.util.List; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Team team = new Team(); team.setTeamName("team1"); em.persist(team); Member member = new Member(); member.setUserName("raewoo"); member.setAge(10); member.changeTeam(team); em.persist(member); em.flush(); em.clear(); System.out.println("============="); String sql = "select t.teamName from Team t"; String result = em.createQuery(sql, String.class) .getSingleResult(); System.out.println(result); tx.commit(); }catch (Exception e) { tx.rollback(); }finally { em.close(); } emf.close(); } } select t.members.size from Team t하는 경우package jpql; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; import java.util.List; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Team team = new Team(); team.setTeamName("team1"); em.persist(team); Member member = new Member(); member.setUserName("raewoo"); member.setAge(10); member.changeTeam(team); em.persist(member); em.flush(); em.clear(); System.out.println("============="); String sql = "select t.members.size from Team t"; Integer result = em.createQuery(sql, Integer.class) .getSingleResult(); System.out.println(result); tx.commit(); }catch (Exception e) { tx.rollback(); }finally { em.close(); } emf.close(); } }
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
Thread의 Context Switching 문의드립니다.
Context Switch 강의에서 예제로 3개의 Thread를 생성해서 실행하는데, 이게 Context Swtiching에 의한 예로 볼 수 있다고 해주셨습니다.근데 이전에 ThreadPoolExecutor를 이용할 경우 여러 개의 코어 프로세스를 이용하여 Thread를 병렬성 + 동시성 실행시킬 수 있었는데, 해당하는 예제에서는 하나의 코어에서 3개의 Thread를 실행시켜서 컨텍스트 스위칭이 일어나는 것으로 보아도 괜찮은걸까요?만약 예제 코드가 ThreadPoolExecutor처럼 3개의 코어가 있을 때 3개의 스레드가 개별적으로 동작한다면 컨텍스트 스위칭이 일어나지 않는다라고 볼 수 있을 것 같아서요!기본적으로 SpringBoot를 이용하여 Tomcat 서버로 구동이될 때, 요청마다 생성되는 쓰레드는 여러 개의 코어에 분배되어 처리되는 것일까요?
-
해결됨실전! Querydsl
querydsl orderspecifier 조건 분기
private List<OrderSpecifier> getOrderSpecifier() { List<OrderSpecifier> orderSpecifiers = new ArrayList<>(); //승인 안된 관리자 우선 조회 orderSpecifiers.add(new OrderSpecifier<>(Order.ASC, admin.isAuthorized)); orderSpecifiers.add(new OrderSpecifier( new CaseBuilder() .when(admin.isAuthorized.eq("FALSE")).then(admin.createdAt.asc()) .when(admin.isAuthorized.eq("TRUE")).then(admin.createdAt.desc()) )); return orderSpecifiers; }아래와 같은 order 순서로 정렬하려 하는데 2,3 조건을 나누는 부분이 잘 되지 않아 질문 남깁니다. CaseBuilder 대신 다른 방법이 있나요?승인 받지 못한 관리자(isAuthorized = 'FALSE') 먼저 조회isAuthorized = 'FALSE' 인 경우에는 createdAt ascisAuthorized = 'TRUE' 인 경우에는 createdAt desc
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
비전공자인데..
이해가 어려운 섹션이나 영상 설명은 질문으로 꼭 남겨주세요.기출문제를 풀다가 막힌 개념이 있나요? 질문으로 회차나 번호, 개념을 예시로 질문해주세요. 답변에 도움이 됩니다.이론 문제는 통합본 PDF 파일로 제공될 예정입니다. (6월 중 업로드 예정)합격을 가르는 것은 역시 코드해석문제. 이론을 외울 시간이 없다면 코드에 익숙해지고, 중요 개념을 몇 가지 외워가면 합격할 수 있습니다.비전공자인데.. 쉬운것도 써주면서 해주시면 좋을것 같습니다... 아무리 쉽다고 해도 비전공자한테는 쉽지 않은것 같아요 계속 영상 돌려봐야되는 느낌입니다조건 반복문 문제푸는 부분하는데 그냥 바로 하는거 같아요 처음에 원래 푸는 방식으로 풀고 빠르게 푸는방법이 아니라 바로 빠르게 푸는 부분이라서 이해가 안가요설명이 없어요
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
출력값이 왜 -25인지 이해가 안 가요
조건반복문 문제 중 while반복문에서 6이 들어가면 충족되지 않으니 실행 안 되고 빠져나오는 거 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@SpringBootTest 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]에러를 다 찾아서 수정을 하였으나 마지막인 Test단계에서계속 무시해버리네요 왜 그런건지 구글링을 해도 이해가안됩니다. h2를 킨 상태에서도 이렇게 에러가 뜨는데 어떻게 해야할까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
컬렉션 페치 조인 관련해서 질문 드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]컬렉션 페치 조인을 하면 페이징시 위험하기 때문에 지양해야 한다고 하셨는데 그러면 페이징을 하지 않을 때는 컬렉션도 페치 조인을 해서 성능을 올려도 괜찮을까요? 아니면 컬렉션은 항상 지연 로딩 하는 것이 안전한가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티에는 validatin을 안하는 게 좋나요?
@Column(nullable = false) 이런 것들을 엔티티 클래스에 하는 것 대신에 dto나 도메인 레이어에서 검증을 하는 게 좋다는 말을 들었는데 엔티티내부에서 검증을 하는 것을 안해도 되는 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assaultThat의 동등성 비교 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]findByName()의 테스트 부분을 보면 아무리 봐도 member1의 밸류값과 result의 밸류값이 "spring1"로 동일한데 테스트에 실패했다고 뜹니다근데 한 가지 의문인 건 테스트 값 결과를 보면 동등성이 아닌 동일성 비교를 하는 거 같은데, MemoryMemberRepository의 store가 HashMap을 사용하기 때문에 equals()와 HashCode()를 재정의 해줘야 하는 걸까요? 강의 내용엔 따로 기재되지 않아 질문합니다!
-
해결됨실전! Querydsl
Bulk 저장 질문
[질문 내용]em.perist()는 bulk를 사용하는 방법이 있나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jpa 자바 버전
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제껏 스프링 버전이 3점대라서 자바 버전인source를 쓰지를 못하고 toolchain만 가능 하더라고요그래서 그런지 실행을 하려고 했으나 위에 경고문과 같이18버전이상부터 실행을 할 수 있게 만들어 놓은것 같은데이런 상황에서는 어떻게 처리해야 할까요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
다차원 배열과 문자열 배열 22분 쯤
이전에 정수형 설명하실 때에는int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};printf("%d", arr[2])이런것처럼 선언하실 때 앞에 *(포인터) 가 없었는데문자열을 설명하실때에는char *arr[2][2] = {{"Hello", "World"},{"app",dev"}};이런식으로 선언하실 때 *(포인터) 가 있더라구요.포인터를 붙이신 이유와 써야될 떄 안 쓸때 차이점을 알 수 있을까요?
-
미해결실전! Querydsl
QHello 빌드관련 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]3.X 버전 설명처럼dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // QueryDSL 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor 'jakarta.annotation:jakarta.annotation-api' annotationProcessor 'jakarta.persistence:jakarta.persistence-api' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') }위와 같이 코드를 넣어 빌드를 하면저는 build 안에만 QHello가 생성되고다른 분들과 같이 src/main에 generated는 전혀 생성되지않습니다.강의에서는 QHello를 임포트 할 때, src/main 쪽의 QHello를 사용하는것 같은데, 저는 build 경로에서 직접 사용해야 되는 문제가 있습니다.실제 사용하려면 src/main를 이용해야 될 것 같은데어떻게 해야 src/main에 generated의 QHello를 생성할 수 있을지 문의드립니다.
-
미해결스프링 시큐리티 OAuth2
동의 후 인증 절차의 구현이 변경됐습니다.
Scope 동의단계2, 즉 최종사용자의 동의가 이루어졌을 경우이 요청은 POST /oauth2/authorize 로 보내지는데요이 과정에서 내부구현의 차이가 강의 버전과 맞지 않아서 코드를 확인해봤습니다.1. 0.4.0 버전부터이때 작동하는 AuthenticationConverter 는 OAuth2AuthorizationConsentAuthenticationConverter 입니다.여기서 OAuth2AuthorizationConsentAuthenticationToken 가 구성됩니다.2.OAuth2AuthorizationConsentAuthenticationToken 의 처리는 OAuth2AuthorizationConsentAuthenticationProvider 가 맡게 됩니다.여기서 code 생성 절차가 진행되는 차이가 있습니다.
-
해결됨김영한의 실전 자바 - 중급 2편
자바에서 구현된 hashset 에서 hashmap을 쓰는이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]굳이 value에 더미값을 집어넣어서까지 가져와 쓰는 이유를 잘 모르겠네요 애초에 value가 없는 set을 구현 해서 쓰면 되는 거 아닌가요? 메모리적으로 낭비라고 생각되는데 어떤 이유 인지 궁금합니다 감사합니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx2 질문입니다 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]똑같이 따라했는데 저는 5까지 정수를 입력한 후에 출력이 안나오고 그 후로 뭘 더 입력하면 오류가 나와버려요 ...ㅠㅠ.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
소스가 전혀 실행이 안됨
강의 1편때의 소스로도 실행이 안되서,다시 2편 소스로 수행하면 에러메시지가 잔뜩 나오는데너무 시작부터 불성실하게 시작하는거 아님?지금 소스 받아서 환경을 맞춰주고 강의를 시작해야지 대뜸시작하면 실행도 안되는 소스로 뭐 어떡하라고.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx3 에서 질문있습니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]조금 논외 질문이긴 하지만 while (true)로 무한루프를 돌려서 -1을 입력한 후 숫자들의 합계와 평균이 나오게 만들고나서도 프로그램이 종료가 안되고 다음 계산을 하는 형식으로는 어떤식으로 코딩을 할 수 있을까요? ㅠㅠex1234총합 10을 출력 후 그대로 이어서 프로그램이 종료가 되지않구 다음 숫자를 입력했을때 다시 이후부터 누적된 총합을 계싼하는 형식으로도 코딩이 가능할까요?그리구 아예 총합을 초기화 후 다시 출력하는 방식도 가능한지 궁금합니다 ...if로 넣어서 혼자 만들어보려고했는데 변수가 안만들어지는건지 계속 컴파일 오류가 떠서요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Transactional 했는데 롤백 문구가 안 떠요
다음과 같이 코드를 실행하면 강의 화면처럼 "Rolled back transaction for test"가 나와야 하는데 그렇지 않고 H2에서도 컬럼만 있는 빈 테이블입니다. 뭐가 문제일까요? package jpabook.jpashop; import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringRunner.class) @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception { //given Member member = new Member(); member.setUsername("memeberA"); //when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기 지연 저장소?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의를 듣다보니 flush 과정에서 쓰기 저장 지연소에 SQL이 저장된다고 설명하셨는데 이것이 뭔지 알 수 있을까요?