inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

@NaturalIdCache에 대한 보충 설명 및 사용법 공유

해결됨

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

'25. 엔티티의 자연키 지정' 영상의 후반부에 적용한 @NaturalIdCache 에 대해 추가로 학습한 내용이, 저처럼 해당 애노테이션을 처음 접한 분들에게 도움이 될 것 같아서 글을 작성합니다. 강의에서 오해가 있을 수 있는 부분, 그리고 자연키에 캐시를 적용하는 방법을 정리해 보았습니다. 강의 내용과 실제 동작의 차이점 강의에서는 “같은 트랜잭션 안에서 같은 아이디 값을 가지고 여러 번 조회 시 Persistence Context 에 캐시된 값을 꺼내오는 것 처럼. @NaturalIdCache 를 적용하면 이것도 영속 컨텍스트에 캐싱이 된다.”고 말씀하셨습니다. 해당 내용에 대한 이해를 돕기 위해 Hibernate의 두 가지 캐시에 대해 간단히 짚고 넘어가겠습니다. 1차 캐시 (First-Level Cache): 세션(영속성 컨텍스트) 범위의 캐시입니다. 같은 트랜잭션 안에서만 유효하며, 트랜잭션이 끝나면 사라집니다. Spring Data JPA에서는 기본적으로 @Id 에 대한 조회를 1차 캐시합니다. 2차 캐시 (Second-Level Cache): 세션 팩토리 범위의 캐시로, 여러 세션에서 데이터를 공유할 수 있습니다. 적용하려면 별도의 의존성 추가 및 캐시 관련 설정( @Cache 등)이 필요합니다. 따라서, "같은 트랜잭션 안에서 캐시된 값을 꺼내온다."는 말은 세션 범위의 1차 캐시로 해석됩니다. 하지만 제가 직접 테스트해 본 결과, @NaturalIdCache 는 1차 캐시 가 아닌 2차 캐시 와 관련이 있었으며, 1차 캐시를 적용하기 위해서는 다른 방법이 필요했습니다. 테스트를 통한 확인 자연키에 대한 1차 캐시 동작을 확인하기 위해, 강의에서 적용한 Member 엔티티의 @NaturalIdCache 를 제거 하고, 자연키(Email)에 @NaturalId 만 적용 한 상황에서 두 가지 방식으로 테스트를 진행했습니다. 테스트1: findByEmail 메서드를 사용한 조회 @Test void NaturalIdFirstLevelCache() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); // 같은 email(Natural ID)로 두 번 조회 Member findMember1 = memberRepository.findByEmail(member.getEmail()).get(); Member findMember2 = memberRepository.findByEmail(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); } Spring Data의 쿼리 메서드를 사용하여 이메일로 조회하는 findByEmail 메서드를 만들고, 한 트랜잭션에서 같은 회원을 두 번 조회했습니다. 자연키에 대한 1차 캐시가 동작한다면, SELECT 쿼리는 한 번만 실행되어야 합니다. 결과는 SELECT 쿼리가 두 번 실행 되었습니다. 즉, 자연키에 대한 1차 캐시가 동작하지 않았습니다. 테스트2: Hibernate의 자연키 관련 API를 사용한 조회 @NaturalId 를 다루는 글들을 찾아본 결과 Hibernate가 제공하는 자연키 관련 API가 있다는 것을 확인했고, 이를 적용하기 위해 커스텀 리포지토리를 구현했습니다. @Repository @RequiredArgsConstructor public class CustomizedMemberRepositoryImpl implements CustomizedMemberRepository { private final EntityManager entityManager; @Override public Optional<Member> findByNaturalId(Email naturalId) { return entityManager.unwrap(Session.class) .bySimpleNaturalId(Member.class) .loadOptional(naturalId); } } 그리고, 테스트 1과 같은 방식으로 테스트를 진행하였습니다. @Test void NaturalIdApi() { Member member = Member.register(createMemberRegisterRequest(), createPasswordEncoder()); memberRepository.save(member); entityManager.flush(); entityManager.clear(); System.out.println("회원 저장 및 persistence context 초기화 완료"); Member findMember1 = memberRepository.findByNaturalId(member.getEmail()).get(); Member findMember2 = memberRepository.findByNaturalId(member.getEmail()).get(); assertThat(findMember1).isSameAs(findMember2); } 결과는 SELECT 쿼리가 한 번만 실행 되었습니다. 이를 통해 자연키에 대한 1차 캐시는 @NaturalIdCache 애노테이션과 무관하게, 전용 API를 사용해야만 동작 하는 것을 확인했습니다. @NaturalIdCache의 용도 @NaturalIdCache Javadoc에는 다음과 같은 설명이 있습니다. Specifies that mappings from the natural id values of the annotated entity to the corresponding entity id values should be cached in the shared second-level cache. …중략 This annotation is usually used in combination with Cache , since a round trip may only be avoided if the entity itself is also available in the cache. 대략 “natural id와 상응하는 id에 대한 매핑을 2차 캐시에 저장 하는 애노테이션이고, 엔티티가 캐시되어있어야 하기 때문에 일반적으로 Cache 와 함께 사용 된다.”라고 해석됩니다. 즉, 1차 캐시가 아닌 2차 캐시를 위한 애노테이션입니다. 정리 2차 캐시 관련 설정 및 테스트를 마저 진행한 후 최종 정리한 내용은 다음과 같습니다. 자연키의 1차 캐시 @NaturalIdCache 애노테이션과 관련 없습니다. 자연키에 @NaturalId 만 붙이면 됩니다. 반드시 Hibernate Session의 bySimpleNaturalId() 같은 전용 API를 사용해야 적용 됩니다. 자연키의 2차 캐시 @Cache 와 @NaturalIdCache 를 함께 사용해야 동작합니다. @Cache 만 사용 시 @Id 로 조회할 때만 2차 캐시가 동작합니다. @NaturalIdCache 만 사용 시 자연키와 ID에 대한 매핑 정보는 캐시 히트 되는 걸 확인했지만, ID와 엔티티에 대한 캐시가 없어서 캐시가 적용되지 않았습니다. @Cache 와 @NaturalIdCache 모두 사용 시 ID를 통한 조회와 자연키를 통한 조회 모두 2차 캐시가 적용됩니다. 참고 자료 Hibernate6.6 공식 문서 NaturalCache javadocs baeldung: Hibernate Natural IDs in Spring Boot Spring Custom Repository 글의 오류나 부족한 내용을 알고 계신 분은 코멘트를 달아주시면 감사하겠습니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
spring 댓글 2 좋아요 13 조회수 411

ArticleApiTest 에서 정적 내부 클래스를 사용하는 이유는?

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

ArticleCreateRequest, ArticleUpdateRequest 은 ArticleApiTest 클래스 내부에 따로 만들어서 사용하고 있는데 이미 만들어진 클래스를 사용하지 않고 테스트 클래스 내부에서 작성해서 사용하는 이유가 뭔지 궁금합니다. 감사합니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
아라레 댓글 2 좋아요 0 조회수 114

ArticleApiTest 에서 로그를 System.out.println()으로 남기는 이유 문의

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

혹시 ArticleApiTest 에서는 System.out.println() 으로 로그를 남기는 이유가 있을까요? ArticleRepositoryTest에서는 log.info로 하셨는데요.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
아라레 댓글 2 좋아요 0 조회수 81

AuthenticationManager 사용 방법

미해결

스프링 시큐리티 완전 정복 [6.x 개정판]

안녕하십니까 선생님, 양질의 강의 항상 감사드립니다. AuthenticationManager와 AuthenticationProvider의 구성에 대해서 개념적으로 확인하고 싶은 것이 있어 질문 드립니다. AuthenticationProvider를 직접 구성하여 등록하지 않으면 기본적으로 DaoAuthenticationProvider, BasicAuthenticationProvider, RememberMeAuthenticationProvider 가 등록이 되는데, 직접 커스텀한 Provider를 등록 시 이 3개의 기본 Provider들은 자동 구성에서 제외 되는 것 인가요? 만약 AuthenticationManger를 builder 혹은 직접생성(new)을 통해 생성한다면 기본 제공 되는 Provider들은 자동 구성에서 제외되는 것 인가요? 만약 그렇다면 AuthenticationManager는 직접 등록하고 싶은 Provider가 있을 때에만 생성하는 것 인가요?

  • spring
  • spring-boot
  • spring-security
  • security
  • web-security
광교js 댓글 2 좋아요 0 조회수 186

comment에 왜 page와 pageSize가 있는 것인가요?

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글을 보면 한 개의 게시물 아래에 댓글이 쭉 나열되어 있습니다. 댓글을 확인할 때 page가 아닌 쭉 스크롤(infinite-scroll) 하면서 확인 하는 것인데 게시물 댓글에 왜 page와 pageSize가 필요한 것인지 모르겠습니다. 게시물의 댓글의 갯수를 말씀하시는 거라면 몇 개의 댓글을 불러오는지 이해가 가는데... 혹시 page와 pageSize가 단순히 두 단어를 말씀하시는 게 맞나요? 아니면 comment_count와 같은 게시물 갯수를 말씀하시는 건가요? @Test void readAll() { CommentPageResponse response = restClient.get() .uri("/v1/comments?articleId=1&page=1&pageSize=10") .retrieve() .body(CommentPageResponse.class); System.out.println("response.getCommentCount() = " + response.getCommentCount()); for (CommentResponse comment : response.getComments()) { if (!comment.getCommentId().equals(comment.getParentCommentId())) { System.out.print("\t"); } System.out.println("comment.getCommentId() = " + comment.getCommentId()); }

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
최어진 댓글 1 좋아요 1 조회수 62

test 케이스 결과 실패

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. JPA와 DB 설정, 동작확인 과정에서 3version으로 pdf 파일보고 설정했는데 test 결과가 실패합니다... 원인을 모르겠습니다

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kua040847 댓글 2 좋아요 0 조회수 64

jpa/도메인 엔티티 분리에 대한 궁금한 점이 있습니다.

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

토비님 안녕하세요. 강의 너무 즐겁게 잘 수강하고 있는 한 개발자 입니다. 강의 수강 중에 궁금한 점이 생겨서, 토비님의 의견이 궁금해서 한 가지 질문 드리고자 합니다. 33. 엔티티 클래스와 JPA 매핑 정보 분리 강의에서 분리를 xml로 분리해서 매핑 하는 예를 들어주셔서, 이 부분에 대해서 궁금한 점이 있습니다. 개인적으로 xml 매핑작성 생산 비용과 jpa/도메인 엔티티를 분리해서 작성하는 비용이 크게 차이나지 않는것 같단 생각이 들긴합니다. 결국 xml이든, 코드든 분리해서 작성 비용이 필요한 것 같아요. 그렇다면, 여기에서 관리 포인트를 이중(xml,코드)으로 가져가는게 나을지, jpa/도메인 엔티티를 분리해서 코드에서 관리하는게 나을지? 고민이 되는데요. 토비님의 의견은 어떠신지 궁금합니다. ai 자동완성 기능 활용 코드도 마찬가지로, 애노테이션 빼줘, 붙여줘 하면 어느정도 잘 만들어주긴 하더라구요. 이 부분도 어떻게 생각하시는지 궁금합니다. 코파일럿에 xml 매핑정보 만들어줘 하는 내용과, 코드로 애노테이션 붙여줘, 빼줘 해서 복/붙하는 행위 자체가 크게 다르지 않은것 같다는 생각이 들긴해서 이 부분은 어떻게 생각하시는지도 궁금합니다. 유지보수 관점에서 생산비용 보다, 개발 완료 후 유지보수를 하는데 있어서 그래도 xml/코드 두가지 중 1개를 선택해야한다면 어떻게 관리하는것이 나을까요?? 바쁘신 와중에도 질문 확인하고 답변 주시는 점 미리 감사드립니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
dev 댓글 2 좋아요 0 조회수 223

58 강에서 동의어처리가 안 됩니다

미해결

실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)

58 강에서 자동완성 기능은 잘 적용되나 동의어처리가 안 됩니다 강의에 나온대로 elasticsearch와 spring boot 의json파일에서 동의어처리와 자동 완성 처리를 설정하고 엘지 건조기 엘지 휴대폰 LG 에어컨 엘지 청소기 LG 공기 청정기 엘지 식기세척기 라고 POST 한 후에 GET /products7/_search { "query":{ "multi_match":{ "query":"엘지", "type":"bool_prefix", "fields":[ " name.auto _complete", " name.auto _complete._2gram", " name.auto _complete._3gram" ] } }, "size":5 } 이렇게 검색하면 LG 에어컨 LG 공기 청정기 는 조회가 안 됩니다 GET /products7/_search { "query":{ "multi_match":{ "query":"LG", "type":"bool_prefix", "fields":[ " name.auto _complete", " name.auto _complete._2gram", " name.auto _complete._3gram" ] } }, "size":5 } 이렇게 검색하면 LG 에어컨 LG 공기 청정기 만 조회 됩니다 그리고, Spring Boot 를 사용하는 강의는 17, 18 강에서 하시고 kibana 에서 실습하다가 60강에서 다시 Spring Boot 에 적용하는 강의가 진행되는데, 18 강에서 없던 ProductService 가 이미 작성되어서 나옵니다. ProductController ProductRepository 도 그러네요... 혹시 중간에 있었는데 제가 놓친 건가요?....

  • spring-boot
  • elasticsearch
  • devops
  • elk
  • infrastructure
Stevens 댓글 4 좋아요 0 조회수 180

mallapi

미해결

코드로 배우는 React 19 with 스프링부트 API서버

mallapi에서 malldb를 연결 했고, apiserver에서 apidb를 연결했습니다. 4강 조회기능에서 test를 위해 malldb에 테이블 확인을 하시는데 왜 갑자기 테이블이 생긴걸까요? 저희는 mallapi는 연결만 하고 구현은 안된거 아닌가요? apiserver에서 구현한 todo는 apidb 안에서 생성되는 걸로 구현이 되어있는데 뭘 잘못 한건가요?

  • react
  • typescript
  • spring-boot
  • jpa
  • jwt
지우지우 댓글 2 좋아요 0 조회수 84

Swagger 강의, Unable to infer base url 이거 뜨시는 분들 도움되시라고

해결됨

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

스프링부트 2.7 버전에서 3.1 버전으로 올려다가 강의대로 이것저것 만져주고 다시 swagger 띄우려고 했더니 'Unable to infer base url 뭐시기' 뜨길래 인텔리제이 '파일' 메뉴에서 'Invalidate caches' 로 'Clear file system ...' 만 체크해서 재기동 한 뒤에 Gradle 이나 Maven 새로고침 하고 프로젝트 기동, ' http://localhost:8088/swagger-ui/index.html ' 페이지 요청 하니 제대로 나옵니다.

  • rest-api
  • spring-boot
  • swagger
shm9856 댓글 1 좋아요 0 조회수 160

회원관리 예제 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 5. 회원 관리 예제 - 웹MVC개발을 실습하는 과정에서, 이렇게 홈 화면까지는 뜨는데, 회원 가입을 누르면 에러 페이지가 뜹니다. 구글 드라이브 링크 첨부하겠습니다! https://drive.google.com/file/d/15PPRaCNjmwZQYFxy5s0uY_FST3DapsL4/view?usp=sharing +) 위에가 메인 질문이고 세부사항 질문이 있습니다. 1) Whitelabel 에러 페이지가 뜨는데 인텔리제이 콘솔 창에는 별도의 에러 메시지가 뜨지 않습니다. 이게 콘솔창 최하단인데요. 에러메시지가 안나는게 정상인가요? 2) 위에 사진을 왼쪽에 실행목록을 보면 계속 로드중 표시 두개가 돌아가는데요. 저게 계속 돌아가더라고요. 빌드가 완료되면 초록색이 떠야되는거 아닌가 싶어서 여쭤봅니다. 웹 상에서 localhost:8080 홈페이지에 들어가지긴 합니다.

  • java
  • spring
  • mvc
  • spring-boot
dmsqkddnf26 댓글 2 좋아요 0 조회수 84

인텔리제이 유료버전 / 무료버전

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모르겠어요) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 이제 백엔드 개발자로 취업한 새내기 입니다. 제가 학생이 아니라 인텔리제이 유료버전을 사용해서 스프링부트앱을 개발하고자 하는데, 너무 비싸서 회사에서 따로 결제를 해주진 않습니다.. 혹시 그냥 커뮤니티에디션 으로 restapi 구현하는 방식으로 회사 일에 유리하게 가져갈 수 있을까요? 저희 회사는 스프링부트를 백엔드로,프론트는 jsp,jstl 사용중이라 집에서도 한번 해보고 싶은데 커뮤니티 에디션으로는 어려워서요

  • java
  • spring
  • mvc
  • spring-boot
우석 댓글 2 좋아요 0 조회수 985

외래키가 없는 일대일 관계에서의 연관관계 주인 설정

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 질문이 생겨 여쭤봅니다. 외래키가 있는 곳을 연관관계의 주인으로 설정하라 하셨는데, 만약 외래키가 없는 두 엔티티가 1대1 관계라면 이때는 랜덤으로 연관관계의 주인을 설정하면 되는 것일까요 ?

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

단위테스트, 통합 테스트, 시스템 테스트...

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제가 부트캠프에서 프로젝트를 진행할 때 테스트 코드를 짜긴 했었는데 거의 지식 없이 짰던지라 controller랑 service만 단위 테스트로 짰고 통합 테스트는 안 했습니다. 단위 테스트는 class 단위 어노테이션에 SpringBootTest를 안 쓰는게 맞는건가요? 제가 그렇게 했었거든요. @SpringBootTest는 통합 테스트일 때만 쓰는 건지, 어떤 경우에 쓰는 어노테이션인 지 궁금합니다.

  • java
  • spring
  • mvc
  • spring-boot
rlgus4531 댓글 2 좋아요 0 조회수 415

도메인 모델의 화살표는 특별한 의미가 있을까요?

해결됨

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

draw.io에서 도메인 모델을 설명해주시는 부분에 대해서 질문드립니다. 도표의 다른 선들은 모두 화살표가 없는데, 수강은 회원과 강의 모델로 화살표가 있어서 어떤 의미인지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
ansxjrdptj94 댓글 2 좋아요 0 조회수 167

프로젝트 생성의 실행

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/ 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/ [질문 내용] 여기에 질문 내용을 남겨주세요. 질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/ 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/ 프로젝트 생성의 13:24의 실행이 되지 않습니다. Cause: class java.util.concurrent.ExecutionException cannot be cast to class java.lang.RuntimeException (java.util.concurrent.ExecutionException and java.lang.RuntimeException are in module java.base of loader 'bootstrap') java.lang.IllegalArgumentException: Could not create problems-report directory '/build/reports/problems' * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 55ms 1 actionable task: 1 executed 두가지의 오류가 뜨는데 어떻게 해결해야할까요?

  • java
  • spring
  • mvc
  • spring-boot
최다솜 댓글 2 좋아요 0 조회수 277

JUnit5 테스트시 DB 구동

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 주문 기능 테스트에서 JUnit5를 이용하여 테스트 중입니다. 앞선 강의(회원 기능 테스트)에서 JUnit으로 테스트할때 메모리 DB 사용한다고 application.yml 을 test 쪽에 복사해서 사용할때도 url: jdbc:h2:mem:testdb 부분을 주석해도 돌아간다고 했었던 것으로 기억이 납니다. 그래서 TEST 시에는 DB를 연결 안해도 무방하다고 생각하고 있었는데요. 오늘 주문 기능 테스트시 DB 끄고 했더니 에러가 나서 DB 연결했더니 정상적으로 동작합니다. TEST에서도 DB를 연결해주어야 하는 걸까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
박선정 댓글 2 좋아요 0 조회수 91

헥사고날 아키텍처에서 Specification 패턴과 Strategy 패턴을 함께 사용하는 것이 적절할까요?

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요, 토비님 강의 정말 잘 보고 있습니다. 하나 궁금한 점이 있어서 질문드립니다. 헥사고날 아키텍처(Hexagonal Architecture)를 도입할 때, Specification 패턴 과 Strategy 패턴 을 함께 사용하는 것에 대해 어떻게 생각하시나요? 좋은 선택이 될 수 있을지, 아니면 둘 중 하나만 선택해서 사용하는 것이 더 나은 접근일지 고민하고 있습니다.두 패턴을 함께 사용하는 사례나 장단점에 대해 조언해주시면 감사하겠습니다.

  • java
  • spring
  • spring-boot
  • specificationpattern
  • strategypattern
부분적무료화 댓글 2 좋아요 0 조회수 173

likeCount, viewCount 등을 처음부터 같이 생성하지 않는 이유가 있을까요?

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 수업 잘 듣고 있습니다. 댓글 수나 조회수 쪽에서, likeCount, viewCount가 없는 경우 init을 통해 생성해주는 방식을 사용하고 있는데, 처음부터 게시글과 게시글의 조회수 객체를 같이 생성하는 방식을 사용하지 않는 이유가 있을까요? 게시글이 있다면 게시글 조회수 객체도 같이 존재하고, 이 둘의 객체 생명주기는 같아야 한다고 생각하는데, 강의가 순차적으로 진행됨에 따라 이전에 db에 생성된 값들이 존재하기 때문에 이렇게 하신건지 궁금합니다!! 그리고 처음부터 같이 생성할 수 있다면 다른 프로젝트에서 그 방법을 선택하는 게 나을까요? 감사하빈다!!

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
shinyurim 댓글 2 좋아요 0 조회수 154

인기 태그

인프런 TOP Writers

주간 인기글