inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

질문드립니다!

해결됨

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용]@Test void bulkAgePlus(){ m emberRepository.save( new Member("AAA", 10, null)); m emberRepository.save( new Member("BBB", 15, null)); m emberRepository.save( new Member("CCC", 20, null)); m emberRepository.save( new Member("DDD", 25, null)); m emberRepository.save( new Member("EEE", 30, null)); int count = memberRepository.bulkAgePlus(18); em.flush(); em.clear(); List<Member> result = memberRepository.findByUsername("EEE"); Member findMember = result.get(0); assertThat(count).isEqualTo(3); assertThat(findMember.getAge()).isEqualTo(31); } 여기서 벌크성 연산을 할경우 엔티티 매니저를 거치지 않고 바로 업데이트를 하기에 findById 호출 전에 flush, clear하지 않으면 업데이트 이전에 save된 값이 나오는 것으로 알고 있어(캐쉬된 값) flush, clear를 해주는 것으로 알고 있는데 이때 em.flush()를 해버리면 벌크 연산 값이 아닌 그 이전 값이(save에서 저장한 값 EEE라 가정하면 31이 아닌 30) db에 업데이트 되는 꼴이라 벌크성 연산이 db에 유효하게 저장되려면 em.clear()만 실행 해야되는거 아닌가요?

  • java
  • spring
  • spring-boot
  • jpa
댓글 2 좋아요 0 조회수 132

31강 질문있습니다!

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

31강에서 수업 코드를 잘 따라 쳐서 수업 내용과 똑같은 결과를 확인 할 수 있게 되었는데요. 한 가지 의문점이 들어 질문을 남깁니다. 수업의 마지막 내용인 클린 코드 책이 이미 대출이 되있어 B사용자가 대출을 하려 했으나 대출을 클릭하는 순간 서버 내부 오류입니다. 라는 내용의 경고창이 뜨는걸 확인했는데 영상의 내용에는 진작 대출되어 있는 책입니다 라는 IllegalArgumentException으로 예외처리를 했어서 서버 내부 오류입니다 라는 내용이 아니라 진작 대출되어 있는 책입니다 떠야 하는게 아닌가요? 다음 강의에서 확인할 수 있으려나요~?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
하민철(Mincheol) 댓글 2 좋아요 0 조회수 114

안녕하세요 @Autowired, @Mockbean, @Mock, @InjectMocks에 대해 질문 있습니다.

해결됨

Practical Testing: 실용적인 테스트 가이드

각 어노테이션을 언제 주로 사용하는지에 대해 아래와 같이 정리를 했는데 맞게 정리 한 건지 궁금합니다. @Autowired를 사용하는 경우 @ActiveProfiles("test") @SpringBootTest class OrderServiceTest { @Autowired private ProductRepository productRepository; @Autowired private OrderRepository orderRepository; @Autowired private StockRepository stockRepository; @Autowired private OrderService orderService; ... } 스프링 컨텍스트에 실제 빈 객체를 등록하고 해당 빈을 사용합니다. 이렇게 실제 빈을 사용하는 테스트라 실제 동작 검증에 있어서 가장 정확성이 높은 테스트 입니다. @Mockbean과 @Autowired를 섞어 사용하는 경우 @WebMvcTest(controllers = ProductController.class) class ProductControllerTest { @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @MockBean private ProductService productService; ... } 스프링 컨텍스트에 실제 빈이 아닌 Mock 빈을 등록합니다. 컨트롤러 레이어에 대해서만 단위 테스트를 하고 싶은데 컨트롤러가 서비스 레이어에 의존하고 있으니 이러한 의존을 끊기 위해 @MockBean을 사용하는 방식입니다. @Mock과 @InjectMocks @ExtendWith(MockitoExtension.class) class MailServiceTest { @Mock private MailSendClient mailSendClient; @Mock private MailSendHistoryRepository mailSendHistoryRepository; @InjectMocks private MailService mailService; ... } @Mock을 통해 스프링 컨테이너에 등록되지 않는 가짜 객체를 생성합니다. 그리고 @InjectMocks에 사용된 객체에 @Mock을 통해 생성한 가짜 객체를 주입하는 방식입니다. 스프링 컨테이너가 필요없는 외부 시스템에 대해 테스트를 할때 진행하는 방식입니다. 위 질문 중에 "@Mockbean과 @Autowired를 섞어 사용하는 경우" 코드에 대해 질문이 있습니다. 컨트롤러에 대한 단위 테스트를 하기 위해 @MockBean을 사용하여 서비스에 대한 의존성을 끊는 부분은 이해를 했습니다. 근데 결국 서비스 객체를 가져다 쓰니 서비스가 의존하고 있는 Repository에 대한 부분도 @MockBean을 사용하여 스프링 컨테이너에 Mock을 등록해야 하지 않나 라는 생각이 듭니다. 아래 코드에 대해 질문이 있습니다. 실제 스프링 부트를 실행 하면 각 서비스 객체와 Repository 객체 모두 스프링 컨테이너에 등록되어 서비스 레이어쪽에서 Repository레이어에 의존하는 상황입니다. 저는 스프링 컨테이너에 빈들도 잘 등록되고 서로 잘 데이터를 주고 받는지도 테스트를 해야한다고 생각하는데 아래와 같이 @InjectMocks과 @Mock을 사용하면 스프링 컨테이너와 상관이 없어져서 아래와 같은 상황에서 @InjectMocks과 @Mock을 사용하여 테스트 코드를 작성해도 되는지 궁금합니다. @ExtendWith(MockitoExtension.class) class CustomServiceImplTest { @InjectMocks private CustomServiceImpl customServiceImpl; @Mock private BankRepository bankRepository; @Mock private ProductRepository productRepository; @Mock private OrderRepository orderRepository; ... } 1번 질문과 같이 정리를 했지만 @Autowired와 @Mockbean 사용에 대해 헷갈리는점이 있어 아래 내용을 정리 했는데 맞게 이해를 한건지 궁금합니다. @Autowired를 테스트 코드에서 사용하는 핵심은 해당 기능을 스프링 컨테이너에 등록하는걸 넘어서 해당 객체의 기능을 실제 사용하겠다 라는 의미다. @Mockbean을 테스트 코드에서 사용하는 핵심 이유는 의존 관계를 끊기 위함이다. 예를 들어 컨트롤러 쪽에서 서비스쪽에 강한 의존관계를 가지고 있어 우선 @Mockbean을 통해 생성한 가짜 객체를 스프링 컨테이너에 등록하고 이 가짜 객체를 컨트롤러쪽에서 의존하고 있는 객체에 넣어줘서 의존관계를 끊는다. 주의할점은 @Mockbean을 통해 생성한 가짜 객체의 기능은 사용하지 않는다. 아래 코드에서 @MockBean을 통해 생성한 ProductService 객체는 가짜 객체이므로 ProductRepository 객체를 못 불러오나요? @WebMvcTest(controllers = ProductController.class) class ProductControllerTest { @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @MockBean private ProductService productService; ... }

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
감바스 댓글 1 좋아요 0 조회수 377

중간 코딩 작성 영상 짤린건가요?

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

5부 25초 domain 패키지에서 Book클래스 만들고 처음에 코드 입력하는 부분이 통 편집된거죠? 클래스 생성하고 갑자기 @Cloumn 어노테이션 작성하는 부분이로 넘어가네요

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
댓글 2 좋아요 0 조회수 159

OrderItem

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 다른 것들은 ...이 추가가 되지 않는데 OrderItem만 ...이 추가 되는 이유가 뭔가요? add를 넣었다고 해서 그런건가요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
형종 댓글 1 좋아요 0 조회수 107

df2 replace 문의

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

df2['D'].replace(" ", "") 하는 것과 df2['D'].str.replace(" ", "") 하는 것이 어떤 차이가 있는것인가요? str 붙이지 않았을 때는 공백 제거가 안되는데 어떤 차이가 있길래 두 함수 출력 값이 다른 것인가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 84

테스트 코드에 sql 로그가 남는 이유

해결됨

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

@Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional //변경 public Long join(Member member) { validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); return member.getId(); } } @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } } --------------------------------------------------------------------------- // 테스트 코드 @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //Given Member member = new Member(); member.setName("kim"); //When Long saveId = memberService.join(member); //Then assertEquals(member, memberRepository.findOne(saveId)); } } 회원 도메인 개발 파트의 마지막 강의에 있는 테스트 부분입니다 테스트는 성공이고, 테스트 결과 로그에는 member 객체에 대한 select sql이 찍힙니다 그런데 테스트 로그에 왜 select sql이 나오는지 잘 모르겠습니다 제가 이해하고 있는 내용은 이렇습니다 //When Long saveId = memberService.join(member); 위 코드에서 insert sql 이 생성되지만 내부 트랜잭션이라 커밋하지 않아서 해당 엔티티가 영속성 컨텍스트에만 추가된 상태 //Then assertEquals(member, memberRepository.findOne(saveId)); 위 코드에선 영속성 컨텍스트의 member를 가져오니 select sql 이 실행되지 않습니다 //When Long saveId = memberService.join(member); //Then assertEquals(member, memberRepository.findOne(saveId)); 그리고 테스트 코드에서 @Transactional 은 롤백이니 join()의 결과가 롤백됩니다 join() 은 롤백됬으니 테스트 결과 로그에 insert sql 이 나오지 말아야 하고, 영속성 컨텍스트의 member를 조회했으니 select sql 도 나오지 말아야 하는 것으로 예상됩니다 하지만 insert sql 은 예상한대로 테스트 결과에 나오지 않는데, select sql 은 나오는 이유를 모르겠습니다 해결했습니다 validateDuplicateMember(member) 중복 회원 검증하는 메서드에서 select sql을 호출하고 있었습니다 em.persist() 보다 먼저 호출하기 때문에 DB에서 바로 조회해오고 있었습니다 이걸 못보다니..

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
pansakr 댓글 1 좋아요 0 조회수 112

H2 testcase 연결 실패

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 테스트를 위해서 윈도우에서 배치파일로 실행하면 주소에 key값이 안 나오고 바로 jsessionid가 나와서 key값 앞에 localhost 로 변경해서 접속을 할 수가 없는데 어떻게 연결하나요? 그냥 jdbc:h2:~/testcase로 연결하려고 해도 Database "C:/Users/user/testcase" not found, either pre-create it or allow remote database creation 여전히 이 오류가 나서 testcase로 접속할 수가 없습니다

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
EFLA 댓글 1 좋아요 0 조회수 209

프론트 코드 부탁드립니다.

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요 강사님. 좋은 강의 잘 들었습니다. 배포 끝내고 간단한 기능들 추가 해보고 싶은데 프론트엔드 원본 코드 아래 메일로 보내주시면 감사하겠습니다. 그럼 즐거운 하루 보내세요 😊 bellbu@naver.com

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
bellbu 댓글 2 좋아요 0 조회수 103

DFS 순서 질문드립니다.

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

1 2 3 1 2 가 출력된 이후 1 3이 선택되는 이유가 이해가 안되어 질문드립니다. ㅠㅠ 1 2 출력 이후 else: 구문의 어느 단계로 가는 건가요..? 그리고 그때 v 값은 얼마인지도 잘 모르겠습니다.

  • python
  • 코딩-테스트
오이오 댓글 2 좋아요 0 조회수 148

다익스트라와 벨만-포드 차이에서

미해결

Do it! 알고리즘 코딩테스트 with Python

안녕하세요. 다익스트라는 에지의 가중치가 양수일때 출발노드에서 전체 각 노드까지의 최단거리, 벨만-포드는 특정 출발노드에서 다른 노드까지의 최단 경로 탐색, 음수 가중치가 있어도 수행 가능 이렇게 되어있는데, 벨만-포드에서 에지 사용 횟수를 강조하는 이유가 다익스트라는 출발 노드가 정해져있고, 벨만-포드는주어진 출발노드가 달라질수 있어서라고 생각하면 될까요..? 처음엔 가중치 양수, 음수만의 차이만 인줄 알았는데, 뭔가 강조하시는걸 보니 저런 이유때문인가하고 질문해봅니다..! 다들 화이팅

  • python
  • 코딩-테스트
  • 알고리즘
  • 다익스트라
  • 벨만-포드
2885_ 댓글 2 좋아요 0 조회수 351

left, right를 사용한 풀이법에 대한 질문입니다

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

n,m=map(int,input().split()) weight=list(map(int, input().split())) left=0 right=(n-1) cnt=0 weight.sort() while left<=right: weight_sum=weight[left]+weight[right] if weight_sum>m: cnt+=1 right-=1 else: cnt+=1 left+=1 right-=1 print(cnt) 안녕하세요 선생님, 이렇게 left, right 포인터를 이용해서 풀어도 예제 문제는 모두 정답이 나오는데 혹시 이렇게 푸는 풀이도 답으로 가능할까요?

  • python
  • 코딩-테스트
댓글 1 좋아요 0 조회수 106

백준 문제풀이 팁

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요 강사님! 백준은 코드를 제출하고 틀렸을시에 어떤 테스트케이스에서 틀렸는지 알려주지 않는데요, 이럴때 틀린 부분을 고칠 방도가 전혀 생각나지 않는 경우가 많이 있습니다. 어떤 테스트케이스가 틀렸는지 잘 알아낼 수 있는 방법 있을까요?

  • python
  • 코딩-테스트
  • 알고리즘
TAESUN 댓글 1 좋아요 1 조회수 444

저는 의사결정 나무의 예측값이 왜 다르게 나올까요?

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 똑같이 하려고 노력한 것 같은데 조금씩 다르게 나오네요...

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
ehddls91 댓글 2 좋아요 0 조회수 167

강의노트

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요, 선생님. 강의노트 모아놓은 PDF 없을까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
댓글 2 좋아요 0 조회수 175

a와 b의 최대 공약수 시간 복잡도 질문

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요. 좋은 강의 감사합니다! a와 b의 최대 공약수 시간 복잡도에 대해 질문이 있는데요. 약수를 구하는 시간 복잡도가 O(√n)이고, 최대 공약수를 구하기 위해서는 a, b 각각의 약수를 구하는 연산이 들어가기 때문에 최소 O(√a + √b)가 될 텐데 어떻게 O(√max(a, b))가 나오게 되는지 궁금합니다.

  • python
  • 코딩-테스트
  • 알고리즘
2scent 댓글 2 좋아요 0 조회수 172

db_constraint=False 에 대해 질문 드립니다.

미해결

파이썬/장고로 결제 시작하기 (Feat. 아임포트) - 기본편

현재 섹션 5의 3번째 영상을 보고 있습니다. category = models.ForeignKey( Category, on_delete=models.CASCADE, db_constraint=False, ) 위 코드에서 카테고리에 왜 db_constraint=False, 를 설정하였는지 이해가 잘 되지 않아 설정 용도에 대해 알고 싶습니다. default=null을 한다면, 카테고리 외래키 없이 product 데이터를 생성할 목적인걸 알겠는데, 없는 상황에서 어떤 이유에 사용하신 것인지 알고 싶습니다.

  • python
  • django
bluebamus 댓글 2 좋아요 0 조회수 206

DBeaver 연결부터 도커로프로젝트 빌드까지 안됩니다.

해결됨

입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기

https://github.com/WooXher/kotlin-study-portfolio 백엔드 프로젝트 참여중인 인원입니다 오후부터 강의 들으면서 따라하고 있는데 첫 mysql 연결시는 3306포트가 사용중이라고 하여 3307로 변경하고 실행하였는데 테스크 커넥션에서 비밀번호가 거부되어 연결이 안되어서 넘기고 프로젝트 빌드이후로 시작하고 있는데 디비연결이 안되어서 그런지 데이터가 보이지 않았습니다. 이것저것 수정하다보니 이젠 프로젝트 자체도 연결이 안되고 있는데 어떻게 해야하나요?

  • kotlin
  • mysql
  • docker
  • spring-boot
  • jpa
양치잘하기 댓글 2 좋아요 0 조회수 373

streamlit을 주피터 노트북에서 사용 불가 한가요??

미해결

초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지

streamlit을 주피터 노트북에서 사용하고 싶은데 어떻게 해야하나요??

  • python
  • 챗봇
  • streamlit
  • openai
  • chatgpt
gimgirl 댓글 1 좋아요 0 조회수 551

일부 일치하는 문자 변경 함수에서 str 뜻

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

기억하기 쉽게 이해하려는데, str이 어떤 단어 앞자리인가요

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 1 좋아요 0 조회수 214

인기 태그

인프런 TOP Writers

주간 인기글