묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메소드 작성 기준 질문 (Order 엔티티의 addOrderItem 메서드 관련)
https://www.inflearn.com/questions/1138263 이분 내용에 이어서 질문 드립니다.(양방향 연관관계에서 연관관계 편의 메서드를 어디에 정의할지 관련)JPA 기본편 내용에서 들었던 것에서 혼동이 조금 생겨서요.원래 "연관관계 주인이 있는 쪽에서 편의메서드를 정의할 것을 권장한다" 로 알고 있었으나,위 링크 답변을 보니 "비즈니스 로직을 개발할 때 자주 사용하게 되는 중심" 에 적용해도 되는 걸로 이해했습니다.그럼 어디에 두던 상관은 없지만, 양방향일 경우 두 엔티티 간 참조 무한루프가 걸릴 수 있으니 한 쪽에만 편의메서드를 정의할 것으로 정리하면 될까요? 감사합니다 🙂
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
왜 lombok이 없다고 나올까요...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberRepositoryTest 중 테스트 실패 원인이 lombok이 존재하지 않는다고 나옵니다.plugin에 lombok이 깔려있는 것을 확인했고annotation도 설정해줬습니다.Member 클래스에도 lombok이 잘 적용됐고요.MemberRepository는 이렇습니다. 마지막으로 MemberRepositoryTest는 이렇습니다. 제가 어느 부분에서 놓친 것인지 잘 모르겠습니다.lombok 재설치와 intellij 재시작을 몇번을 했는지 모르겠습니다.어느 부분에서 제가 놓쳤는지 알려주실 수 있으신가요 ?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
8강 재질문입니다 (코드포함) (해결)
코드를 다시 찬찬히 살펴봐도 틀린게 뭔지 모르겠어요...시간나시면 검토 가능 하실까요? 아니면 처음부터 다시 코딩을 해봐야겠네요////package com.group.libraryapp.UserController; import com.group.libraryapp.domain.user.User; import com.group.libraryapp.dto.calculator.request.user.response.UserResponse; import com.group.libraryapp.user.request.UserCreateRequest; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.*; @RestController public class UserController { private final List<User> users = new ArrayList<>(); @PostMapping("/user") // POST /user public void saveUser(@RequestBody UserCreateRequest request){ users.add(new User(request.getName(), request.getAge())); } @GetMapping("/user") public List<UserResponse> getUsers(){ List<UserResponse> responses = new ArrayList<>(); for(int i=0; i<users.size(); i++){ responses.add(new UserResponse(i + 1, users.get(i))); }//users에 저장한 유져들을 for문으로 userResponse형태로 바꾸어 결과 list에 추가 return responses; } } package com.group.libraryapp.dto.calculator.request.user.response; import com.group.libraryapp.domain.user.User; public class UserResponse { private long id; private String name; private Integer age; public UserResponse(long id, User user) { this.id = id; this.name = user.getName(); this.age = user.getAge(); } public long getId() { return id; } public String getName() { return name; } public Integer getAge() { return age; } } package com.group.libraryapp.domain.user; public class User { private String name; private Integer age; public String getName() { return name; } public Integer getAge() { return age; } public User(String name, Integer age) { if(name == null || name.isBlank()){ throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.", name)); } this.name = name; this.age = age; } } // 해결했습니다.강사님께서 화면공유 방법으로 해결해주셨고 말씀해주신 해결방법은인텔리제이에서 run 후 오류내역에서 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.group.libraryapp.user.request.UserCreateRequest` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2]확인하셨고UserCreateRequest클래스에서 기본생성자를 추가하여 해결하였습니다.매개변수가있는 생성자를 사용하면 추가로 기본생성자를 만드는 습관을 들이겠습니당
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
무엇을 jar 해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]필자는 2분 57초까지 했을 때, 여기서 사진 마지막 부분에 ls로 무엇이 있는지 확인을 했는데 jar 파일이 두개가 떠서 저 경우에는 무엇을 jar 해야하는지 여쭙고 싶어요+ 강의에서 보면 ll 명령어를 사용하는데 저 명령어가 저는 없는 명령어라고 뜨는 것 같아서요, 뭐라쳐야하나요? 저 또한 MAC OS 입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실무에서 주로 사용하는 DB툴이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 주로 H2 데이터베이스를 활용해 강의를 진행해주시는데, 실무에서는 데이터베이스를 다룰 때 보통 어떤 툴을 사용하는 지 궁금합니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
Post에 edit 메서드 삼항연산자 질문
업데이트 관련 질문입니다!!PostEdit을 만들고 Post에 edit이라는 메서드를 만들어서 PostEdit자체를 받은 후에 삼항연산자를 쓰는 방식으로 해결해도 문제가 없을까요??@Data public class PostEdit { @NotBlank(message = "제목을 입력하세요.") private String title; @NotBlank(message = "내용을 입력하세요.") private String content; @Builder public PostEdit(String title, String content) { this.title = title; this.content = content; } }public void edit(PostEdit postEdit) { this.title = postEdit.getTitle() != null ? postEdit.getTitle() : this.title; this.content = postEdit.getContent() != null ? postEdit.getContent() : this.content; }
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강의 내용은 아니지만 진도와 체득에서 질문이 있습니다..
영한 선생님 강의를.. Http부터 시작해서 지금 실전 2편까지 쭉 로드맵대로 왔는데요.. 실전 2편부터는 지금까지 MVC와는 다르게 API개념이 익숙지 않다보니 머리가 많이 뒤죽박죽이고 과열(?) 된 상태입니다..영한쌤이야 워낙 쉽게 설명해주시고 이해도 잘 되서 강의 들을 땐 좋지만 막상 누가 강의 후에 강의 내용을 기반으로 하되 강의 소스코드 보지말고 복붙하지 말고 새로운 코드를 짜봐! 하면 사실 자신 없다라는게 제 솔직한 심정인데.. 여기서 어떻게 방향을 잡아야 할지 모르겠네요.. 시간이 걸리더라도 완강한 강의 중 부족한 부분을 다시 듣고 토이프로젝트 반복 후에 실전 2편과 나머지 querydsl이나 data jpa를 들어가는게 나을지 아니면 일단 쭉 로드맵 끝낸 후에 복습으로 들어가는게 나을지 고민이 됩니다.물론 시간 충분한 학부생이면 모르겠지만 취준생 입장이라 고민이 더더욱 크네요..
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
배포 부분 질문드려요!
안녕하세요. 강사님 항상 좋은 강의 감사하게 잘 듣고 있습니다! ec2 프리티어로 강의에서 배포하는 방식으로 실 서비스에서도 바로 사용할 수 있을까요? 해당 강의를 통해 토이 프로젝트를 만들고 실제로 서비스를 하려는 방식으로 사용할 때 강의에서 보여주신 설정이랑 배포방식으로 가능한지 궁금합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA와 DB설정 @GeneratedValue
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]방금 막 JPA와 DB설정, 동작확인 강의를 들은 수강생입니다.강의를 듣고 제 코드와 비교해보던중 @Entity로 지정된 Member 클래스에서id값을 자동으로 id값을 생성하도록 @GeneratedValue를 붙여주었습니다.이상태로 JpashopApplication의 main을 실행시키면 다음과 같은 오류가 발생합니다.2024-01-29T15:56:56.149+09:00 ERROR 45920 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member]2024-01-29T15:56:56.150+09:00 WARN 45920 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member] @GeneratedValue(strategy = GenerationType.IDENTITY)로 바꿔주니깐 정상적으로 동작하긴 하는데 해결방법이 이게 맞는지 모르겠습니다... 코드는 제공해주신 코드 복붙해서 해보았는데도 동일한 오류 발생합니다 부트 버전 : 3.2.2h2 버전 : 1.4.200사용하고있습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
예외처리시 포스트맨에 출력안되는 문제
안녕하세요 ! 강사님좋은 강의 잘 보고 있습니다.Feign의 예외처리에서 강의와 다른부분이 발생하여 질문 남깁니다. FeignErrorDecoder를 통해 예외 처리시 .[user-service] [-auto-1-exec-10] .w.s.m.a.ResponseStatusExceptionResolver : Resolved [org.springframework.web.server.ResponseStatusException: 404 NOT_FOUND "사용자의 주문이 비었습니다"] 위 로그가 user-service에서 error catch를 통해 잘 나오는 것을 확인했습니다.(09:36)강의영상에서는 404 Error를 전달하여 포스트맨 응답에서 Error msg까지 출력이 되었지만, 저의 경우에선 APIGatgeway에서의 로그및 포스트맨응답에Global Filter End : response id -> 403 FORBIDDEN으로 응답이 보내집니다. 이전 강의 부분(정상 응답)에서 해당 문제가 없었지만, 에러 응답시 403응답으로 처리되어지는 부분에 대해서 추가적으로 ApiGateWay에 대해서 github에서는 따로 handling이 없어서 추가적으로 handler를 등록하여 적용되어야하는 부분인지 여쭤봅니다 .++해당부분 user-service의 WebSecurity특정 ip 통과부분에 실제 ip(자신의 ip)를 누락하였네요.Error에 대한 부분도 응답이 됩니다.추가적으로 error에 대해서 403으로 응답이 되는부분은https://colabear754.tistory.com/182해당글을 참고하시면 될것같습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Filter의 로그가 출력되지 않습니다.
gateway에 의해서 api는 정상적으로 호출이 되는데 로그가 출력되지 않습니다.customFilter, globalFilter 모두 출력이 되지 않았습니다. 코드에 혹시 누락된 부분이 있을까요.Global Filterpackage com.example.springgateway.filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; @Component @Slf4j public class GlobalFilter extends AbstractGatewayFilterFactory<GlobalFilter.Config> { public GlobalFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { // Custom Pre Filter return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); log.info("Global Filter baseMessage : {}", config.getBaesMessage()); if (config.isPreLogger()) { log.info("Global Filter Start : request id -> {}", request.getId()); } else { log.info("preLogger is false"); } // Custom Post Filter return chain.filter(exchange).then(Mono.fromRunnable(()-> { if (config.isPostLogger()) { log.info("Global Filter End : request id -> {}", response.getStatusCode()); } else { log.info("postLogger is false"); } })); }; } @Data public static class Config { //put the configuration properties private String baesMessage; private boolean preLogger; private boolean postLogger; } } application.ymlspring: application: name: gateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ predicates: - Path=/first-service/** filters: - CustomFilter - id: second-service uri: http://localhost:8082/ predicates: - Path=/second-service/** filters: - CustomFilter # - AddRequestHeader=second-request, second-request-header2 # - AddResponseHeader=second-response, second-response-header2 - id: user-service uri: http://localhost:8083/ predicates: - Path=/user-service/** filters: - CustomFilter # filters: # - AddRequestHeader=user-request, user-request-header2 # - AddResponseHeader=user-response, user-response-header2 - id: catalog-service uri: lb://CATALOG-SERVICE predicates: - Path=/catalog-service/** - id: order-service uri: lb://ORDER-SERVICE predicates: - Path=/order-service/** default-filters: - name: GlobalFilter args: baseMessage: Spring Cloud Gateway Global Filter preLogger: true postLogger: true eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka server: port: 8000 Filter Configpackage com.example.springgateway.config; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; //@Configuration public class FilterConfig { // @Bean public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) { return builder.routes() .route(r -> r.path("/user-service/**") .filters(f -> f.addRequestHeader("user-request", "user-request-header") .addResponseHeader("user-response", "user-response-header")) .uri("http://localhost:8083/")) .route(r -> r.path("/second-service/**") .filters(f -> f.addRequestHeader("second-request", "second-request-header") .addResponseHeader("second-response", "second-response-header")) .uri("http://localhost:8082/")) .build(); } } Postman 실행 결과
-
미해결스프링 배치
잡 파라미터 관련 질문 있습니다.
안녕하세요. 잡파라미터 기본 설정 관련 질문이 있습니다.스프링 배치에서는 잡파라미터를 입력하지 않은 경우 이전 배치 실행 이력에서 (실행한 적이 있는 경우) 사용되었던 잡파라미터를 가져와 그값을 세팅해서 실행을 시키는대요.이렇게 처리하는 이유가 무엇인지 궁금합니다. 아무때나 그러는 건 아닌 것 같고 RunIdIncrementer 를 사용할 때만 이렇게 동작하는 것으로 보이는데 어떤 이유가 있을까요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
@Configuration WebMvcConfig클래스에대해
WebMvcConfig 클래스에 @Configuration애노테이션을 사용하면 addInterceptors 메서드에 @Bean을 달아줘야 동작할줄 알았는데 @Bean 애노테이션을 안달아줘도 잘 작동하는 이유가 궁금합니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
1강 질문입니다.
섹션3까지 듣고 만든 유저를 바탕으로 게시판 API만들어보려고 spring.io로 프로젝트를 아예 새로 만들었는데요다른 건 선생님께서 주신 library-app과 유사한데, external libraries에 java11 추가하고 싶은데 추가 하는 방법을 모르겠습니다.또 new해서 새로 만들기 하면 파일, 스크래치 파일, 디렉토리만 있고 class같은 건 없어요..사실 spring.io말고 그냥 intellij에서 new project하면 처음에 설정하는 이 부분에서 generators도 다른 사람은 엄청 많고 여기서 하던데 저는 4개밖에 없는데 왜일까요..?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
8강 서버 내부오류 어떻게 해결하죠..?
sql서버도 껏다가 다시 시작도 해보고포스트맨도 창 전부 지웠다 다시 하고 오류 없이 200ok나온것 확인도 하구인텔리제이 코드도 컴파일 잘 되는거 확인 했습니다..http://localhost:8080/v1/index.html 들어가서 이름 나이 입력하면 서버내부오류라고 나오네요답변해주시면 갑사합니다.그림 첨부하고싶어도 사진클릭이나 저장이 불가능하네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA 17분 오류 발생
강의 17분에서 통합테스트 돌렸는데 이런 오류가 뜹니다.어딜 하나 건드려서 지금 오류가 전부 뜨는 것 같은데클래스가 너무 많아서 어디가 오류인지도 잘 모르겠습니다..답변 기다리겠습니다.Hibernate: select m1_0.id,m1_0.name from member m1_0 where m1_0.name=?2024-01-28T22:17:30.817+09:00 WARN 11685 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 42104, SQLState: 42S042024-01-28T22:17:30.817+09:00 ERROR 11685 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Table "MEMBER" not found (this database is empty); SQL statement:select m1_0.id,m1_0.name from member m1_0 where m1_0.name=? [42104-214]org.hibernate.exception.SQLGrammarException: could not prepare statement [Table "MEMBER" not found (this database is empty); SQL statement:select m1_0.id,m1_0.name from member m1_0 where m1_0.name=? [42104-214]] [select m1_0.id,m1_0.name from member m1_0 where m1_0.name=?] at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:64) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:187) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:76) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.lambda$list$0(JdbcSelectExecutorStandardImpl.java:102) at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:226) at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:163) at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:254) at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:134) at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:361) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93) at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:110) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:303) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:244) at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:518) at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367) at org.hibernate.query.Query.getResultList(Query.java:119) at hello.hellospring.repository.JpaMemberRepository.findByName(JpaMemberRepository.java:34) at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:33) at hello.hellospring.service.MemberService.join(MemberService.java:27) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:756) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:756) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) at hello.hellospring.service.MemberService$$SpringCGLIB$$0.join(<generated>) at hello.hellospring.service.MemberServiceIntegrationTest.join(MemberServiceIntegrationTest.java:30) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 - 비즈니스 로직 stockQuantity 질문있습니다!
=====================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]상품 엔티티 개발(비즈니스로직) 강의엔티티 내에서 stockQuantity와 관련된 로직이 함께 있어 응집성이 높아짐 + 캡슐화에 부합 -> 관리하기 좋음 이렇게 이해를 했습니다.여기서 질문이 객체지향원칙 SOLID - SRP 단일책임 원칙에 의해 클래스는 하나의 변경 이유만 가져야 한다. 에서 비즈니스 로직을 추가함으로써 SRP 원칙을 위배한거라고도 볼 수 있을까요?맞다면 객체지향원칙 - SRP원칙을 위배했지만 좋은 코드 같긴한데 위 사례에서는 객체지향적 설계로 완벽하다고는 볼 수 없는건가요?객체지향 원칙을 굳이 무조건 따르지 않고 유연하게 코드 개발을 해나가는게 좋을까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
api응답을 어떤 식으로 하면 좋을까요?
강의를 보고 혼자서 api를 만들어보고 있습니다.강의 회원 가입 예제api는 void로 별도의 응답을 하지 않았는데 보통은 어떤 식으로 하나요?[{"success" : "true"}]이런 식으로 나마 응답 값을 주는게 맞을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
요약 정리 파일
혹시 선생님이 코드 치시는 부분 말고 요약 정리 하신 부분은 따로 파일이 없는 건가요?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실행오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]<엔티티클래스 개발2>의 6:51부분까지 따라하고 JpashopApplication 을 실행했는데 오류가 뜨네요.Caused by: org.hibernate.type.descriptor.java.spi.JdbcTypeRecommendationException: Could not determine recommended JdbcType for Java type 'jpabook.jpashop.domain.Item.Item'