묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
expected 옵션이 없어서 질문드립니다.
Junit5로 테스트를 생성해서 그런지Test애노테이션에 expected 라는 옵션이 없어서@Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); }이렇게 만들어서 돌렸는데 테스트가 통과했다면 그냥 넘어가도 되는 것일까요? @Test() public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item book = createBook(10000, 10, "시골 JPA"); int orderCount = 11; //when Assertions.assertThatThrownBy(() ->orderService.order(member.getId(), book.getId(), orderCount)) .isInstanceOf(NotEnoughStockException.class); fail("재고 수량 부족 예외가 발생해야 한다."); }이렇게 돌리면 재고 수량 부족 예외가 발생해야 한다.java.lang.AssertionError: 재고 수량 부족 예외가 발생해야 한다. 라는 예외가 발생했습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
getTotalPrice에서 사용하는 필드? 질문입니다
public int getTotalPrice() { return orderPrice * count; } public int getTotalPrice() { return getOrderPrice() * getCount(); } 주문 아이템의 가격을 반환해야할 때 당연히 위처럼 코드를 작성해야겠다고 생각했는데, 강의를 보니 아래처럼 하시더라구요결국 같은 값을 반환하는 것 같은데 어떤 차이가 있는지 알 수 있을까요 ?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
16:25초 부터의 설명이 이해가 가지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Column에서 unique나 length제약조건을 거는것은 런타임에 영향을 주지 않는다 하시고 @Table에서 name을 사용해서 테이블 명을 바꾸는것은 런타임에 영향을 주신다고 하셧는데 둘의 차이를 이해하지 못하고 있습니다. @Table의 name을 변경하는것이 인서트 쿼리나 업데이트 쿼리에 영향을 준다고 하셧는데 이 말 자체를 이해하지 못하고 있는 것 같습니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]윈도우 cmb창에서 명령 프롬프트에서 gradlew.bat 를 실행하려면 gradlew 하고 엔터를 치면 됩니다. --> 여기까지는 실행이 됬으나 gradlew build에서 BUILD FAILED 됩니다... 도저히 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
join과 join fetch 의 차이 ..
OrderQueryRepository 에 findAllByDto_flat 보면다 join 으로 되어있는데 join과 join fetch (페치 조인)의 차이점은 뭔가요 ..?join도 lazy 로 되어있는거 한번에 끌고오는 건 비슷한 거 같은데 .. ㅜ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
9분 05초 author이랑 isbn
author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
수강 범위에 대한 질문입니다 ㅠㅠㅠ
안녕하세요 나도코딩님 오늘도 열심히 공부중인 학생입니다 ㅠㅠㅠ복수전공 과목 중 자바로 배우는 자료구조를 수강중인데 사전에 자바 공부도 없이 듣는 수업이라 도통 무슨 소린지 이해가 가질 않네요..그래서 현재 고급편 결제하고 섹션9 추상클래스 까지 들은 상태인데 뒤로 갈수록 내용이 어려워져서 복습한다고 속도가 너무 늦어지는 상태에요..자료구조 내용을 이해하려면 일단 어떤 파트를 필수적으로 빨리 들어야 하고 어떤 파트는 빼도 되는지 알려주실 수 있을까요??ㅜ 답변 주시는데 도움이 될 지 모르겠지만 교재 한 챕터에{자바 데이터 타입(기본타입, 참조타입), 제어문(조건문,반복문), 메소드(호출문,메인), try문}이렇게만 존재하긴 하는데 중간중간 책에는 없는 추상클래스, 입력문 같은 파트도 보여서 감이 안잡히네요..
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
인터페이스 변수
안녕하세요~ 강사님, 인터페이스(후반전) 강의를 듣고 있는데, 왜 인터페이스 변수를 만드는지 이해가 가지 않습니다. 수업 내용에서 FactoryCam이 인터페이스 Detectable과 Reportable을 구현하여 인터페이스에 있는 메소드를 FacstoryCam에서 구현해야한다는 것은 이해했습니다.그리고 다른 클래스의 detect 메소드와 report 메소드를 호출하는것이라서 public void detect(){detecter.detect();} 이고, detecter은 객체이잖아요. 여기서 막힙니다. 이 객체랑 인터페이스 변수랑 무슨 상관인지? FactoryCam 의 인터페이스 변수를 생성해서 변수에 값 저장하는 걸로 하면 되지 않는지? 왜 인터페이스 변수를 선언해서 거기다가 값을 저장하는지, 잘 이해가 안 됩니다....ㅠㅠ 그리고 추가로, 인터페이스로 다중 상속이 가능하다고 하셨는데, 수업 내용 중 어떤 것이 다중 상속이 되고 있는지 파악하기가 어렵습니다. 혹시, 다른 클래스의 메소드를 호출할 수 있는 부분때문에 다중 상속이 가능한 것인가요? 후반부로 갈수록 어렵네요 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 입문에 대하여 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하십니까, 자주하는 질문 에서 학습방법을 봤는데코드를 쭉 따라하는식 방법이 적혀있었는데, 이렇게 따라만 해도 공부가 되는게 맞을까 혹시나 하는 마음에 따로 질문을 올리게 되었습니다.따로 국비학원 수료 없이 학교 졸업하자마자 취업했는데 백엔드 스프링을 사용한다해서 선생님 강의 커리큘럼을 따라갈려고합니다. 스프링을 배우는데 자바 기본 지식이 필요하다해서 자바의 정석 유튜브를 먼저 보고, 부족하지만 최대한 자바 기본 문법개념 같은걸 숙지한 상태에서 선생님 영상 시청하고있습니다. 선생님의 이론수업이 정말로 재밌고 스프링 입문하는데 좋은걸 알겠는데 이론설명뒤에 선생님이 치시는 코드가 무엇을 의미 해석이 안되고, 코드형식(?) 코드 구조 (문법?) 이게 정말 와닿지 않는 상태이다보니 ,영상을 보고 타이핑하니깐 공부 하는 느낌이 안들어서 걱정이 됩니다. 프로그래밍 능력, 자바기초실력이 부족해서 이런 느낌을 받는 거 같은데 회사 실무에 도움이 될까 걱정이 됩니다.처음 취직한 회사라서 최대한 적응하고 회사에 도움이 되는 개발자가 되어보고싶은데 어떠한 방식으로 공부를 해야할 지 조언이 가능할까요?(혹시 책이나 강의같은걸 추천해주시면 감사하겠습니다.)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 시간복잡도 O(2^26) 이면 풀려야 하는 것 아닌가요? ㅠㅠ
자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠpackage lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문 드립니다!
15강 람다식 질문 드립니다!선생님 안녕하세요!15강에서 작성해주신 람다식이 있는데람다식을 사용하지 않은 코드도 댓글로 알려주실 수 있으실까요~!자바 공부를 시작한 지 얼마 되지 않아서 혼자 해보려 해도 잘 안되네요..! 부탁 드리겠습니다!! 감사합니다!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct를 적용하지 않았을 때의 결과 관련
강의를 중간에 distinct를 적용하지 않으면 포스트맨에서 결과가 중복되게 나오고, 쿼리도 inner join으로 되어야 하는데 이상합니다ㅜ코드가 모두 동일한데, 콘솔에 찍어봐도 4건이 아닌 2건 밖에 조회가 되지 않고 결과도 2건으로 나옵니다..또한, 강의에서는 inner join이 나가는데 제 코드는 join이 나갑니다..뭐가 문제일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
"item.orderItems[0].item.name" 질문 관련
https://drive.google.com/file/d/1OKpCQpwYWvWjppEIcvzWpSZKy09GAivy/view?usp=sharing위에는 구글 압축 파일입니다.다음은 에러 내용입니다.Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0].item.name" (template: "order/orderList" - line 46, col 21)Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid 야생형 코스로 들으려고 하다보니 에러난 부분을 고치기가 어렵고 다른 분들도 같은 질문을 많이 하셨어서, 질문들도 다 확인해보고 저의 코드에서도 해당 부분들을 유심히 보았으나 에러를 잡지 못해서 질문드렸습니다. 위의 에러코드 내용을 미루어보아 orderItems의 값이 null이어서 화면에 나오지 않는다고 생각하여서 그 부분을 확인해보았는데, null로 출력되는 것은 확인하였습니다. html코드의 문제인가 싶어 코드도 계속 확인해보고, 선생님께서 제공해주신 코드파일에 있는 html을 그대로 복사해서 실행해보았는데도 수정이 되지 않아서 질문드렸습니다. 감사합니다. Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Tue Mar 28 19:44:33 KST 2023There was an unexpected error (type=Internal Server Error, status=500).An error happened during template parsing (template: "class path resource [templates/order/orderList.html]")org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372) at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1415) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1159) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:537) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0].item.name" (template: "order/orderList" - line 46, col 21) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) at org.attoparser.MarkupParser.parse(MarkupParser.java:257) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ... 48 more Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.orderItems[0].item.name" (template: "order/orderList" - line 46, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:144) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) at org.thymeleaf.engine.Model.process(Model.java:282) at org.thymeleaf.engine.Model.process(Model.java:290) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel(IteratedGatheringModelProcessable.java:368) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process(IteratedGatheringModelProcessable.java:222) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd(TemplateHandlerAdapterMarkupHandler.java:388) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:322) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd(OutputExpressionInlinePreProcessorHandler.java:220) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:164) at org.attoparser.HtmlElement.handleCloseElementEnd(HtmlElement.java:169) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd(HtmlMarkupHandler.java:412) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd(MarkupEventProcessorHandler.java:473) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement(ParsingElementMarkupUtil.java:201) at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:725) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ... 50 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.growCollectionIfNecessary(Indexer.java:700) at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.getValue(Indexer.java:664) at org.springframework.expression.spel.ast.Indexer.getValueInternal(Indexer.java:102) at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:61) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:91) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:112) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:338) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ... 75 more
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
a href 태그 관련질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.home.html 에<a href="/members/new">회원 가입</a>여기서 /members/new 가 localhost:8080/members/new 로 연결이 되는 것같은 데 어떻게 가능한건지 잘 모르겠습니다. /members/new 는 절대경로로 알고 있는데 프로젝트 폴더에는 이러한 폴더가 없습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
생성 메서드, 빌더 패턴, 생성자
안녕하세요 선생님!! 항상 좋은 강의 해주셔서 감사드립니다 :)강의에서 new 생성자를 못쓰도록 생성자를PROTECTED로 막으시고 생성 메서드만 사용하도록 하셨는데요.프로젝트를 진행할 경우나 실무에서 생성 메서드만 통일해서 사용하는 것이 좋을까요 아님 아래 예시와 같이 생성 메서드와 빌더 패턴 둘 다 혼합해서 사용해도 괜찮을까요?Order 클래스의 생성 메서드에서 Setter를 안쓰고 예시와 같이 생성자를 사용해도 괜찮을까요?감사합니다! Item @Builder private Item(String name, int price, int stockQuantity) { this.name = name; this.price = price; this.stockQuantity = stockQuantity; } Order private Order(OrderStatus status, Member member) { this.status = status; this.member = member; this.orderDate = LocalDateTime.now(); } public static Order createOrder(OrderStatus status, Member member, OrderItem... orderItems) { Order order = new Order(status, member); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } return order; }
-
해결됨실전! 스프링 데이터 JPA
fetchjoin시 QueryDsl과 @EntityGraph 사용 기준
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님. QueryDsl과 @EntityGraph 사용 기준에 대해 궁금한 부분이 생겨서 질문 남깁니다.fetchJoin을 할 때, 여러가지 방법이 있겠지만 QueryDsl과 @EntityGraph이 가장 편리한 방법이라고 생각합니다. 저의 경우엔 @EntityGraph가 가독성이 더 좋다고 느껴서 간단한 조회용 페치조인의 경우에 사용하고, 검색조건이 있는 복잡한 조회의 경우엔 Querydsl을 사용하는데요. 실제로 이 둘을 사용할 때 어떤 것에 우선순위를 두시는지 궁금합니다. 강의 잘 듣고 있습니다. 감사합니다!
-
미해결
@Builder에 대해서 질문이 있습니다.
스프링 부트에서 DTO를 만들 때 @setter을 빼고 @Builder로 하는게 좋다고 들었습니다.근데 책이랑 구글을 찾아보다 보니 두 가지의 방법으로 하는 것을 봤는데 무슨 차이인지 무엇이 더 좋은 방법인지를 모르겠어서 질문드립니다. 생성자 위에 @Builder를 사용하는 방법@Getter //Getter 생성 public class LombokPerson { private String name; private String grade; private int age; @Builder // 생성자 만든 후 위에 @Build 어노테이션 적용 public LombokPerson(String name, String grade, int age) { this.name = name; this.grade = grade; this.age = age; } 클래스 위에 @Builder를 사용하면서 @Setter도 사용하는 방법@ToString @Setter @Getter @Builder @NoArgsConstructor @AllArgsConstructor public class UserDTO { private String token; private String userName; private String password; private String id; } 2번째의 방법이 책에서 나온 방법인데 @Setter이 바뀔 수도 있어서 @Builder로 생성자로 받는거로 알고 있는데 여기서는 @Setter과 @Builder을 같이 쓰더라구여. 이거에 대해서 알려주세요 ㅠㅠ
-
미해결
Could not find javax.xml.bind:jsxb-api:.
java11, springboot2.7.1로 프로젝트 진행했던 프로젝트를 열어 실행하니 에러가 발생합니다.해결하지 못하여 질문드립니다!발생에러11:46:16 AM: Executing ':RandomApplication.main()'... > Task :compileJava FAILED Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.4.1/userguide/command_line_interface.html#sec:command_line_warnings 1 actionable task: 1 executed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : * 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 BUILD FAILED in 652ms 11:46:16 AM: Execution finished ':RandomApplication.main()'.Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html시도java JDK 버전 확인, 빌드 자동 실행 설정 등.. 구글링해서 찾아봤으나 해결하지 못했습니다ㅠㅠ검색해보면 jaxb-api:. 를 기준으로 나오는데, 제 에러는 jsxb-api 입니다 이 둘의 차이는 무엇인가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
19강 질문
안녕하세요 선생님 늘 친절하게 답변해주셔서 감사합니다. 19강에서 궁금한 게 있는데 service와 repository를 스프링 빈으로 만들기 전에 왜 jdbctemplate에 의존할 수밖에 없는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
쿼리가 강의보다 더 나오고 있습니다.
"/api/v2/simple-orders " 이 url로 호출했을 때,(1) order테이블에서 가져오는 쿼리 1번 => (2개의 데이터)(2) member 쿼리 1번 * 2(3) delivery 쿼리 1번 * 2해서 총 5번이 나오는 걸로 알고 있습니다. 근데 현재 로그에서 총 쿼리가 7번이 나가고 있습니다. 코드를 따라쳐보면서 했는데도 왜 다르게 나가는지 원인을 짐작하기가 힘듭니다. 현재 제 쿼리는 (1) order 테이블에서 가져오는 쿼리 1번(2) member 쿼리 1번(3) delivery 쿼리 1번(4) delivery id 조건절로 order 찾는 쿼리 1번(2)~(4)번 한 번 더 반복이렇게 해서 총 7번 쿼리가 나가게 됩니다. 쿼리만 보고 어떤 부분때문에 더 나가게 됐는지 짐작할 수 있을까요? 엔티티 간의 연관관계 매핑은 강의를 보면서 했기 때문에 제가 중간에 놓쳤나 생각이 들기도 하네요ㅜ 원인을 짐작하기가 어렵습니다. select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id fetch first ? rows only 2023-03-23T19:03:54.387+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-03-23T19:03:54.390+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-03-23T19:03:54.393+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 2023-03-23T19:03:54.395+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.member_id=? 2023-03-23T19:03:54.396+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2023-03-23T19:03:54.397+09:00 DEBUG 56506 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=?