묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 웹 프로젝트에서 서블릿 필터, 인터셉터, AOP가 선언된 경우 AOP가 동작하는 시점에 대한 질문입니다.
안녕하세요. 스프링 MVC Part.2 강좌에서 필터와 인터셉터를 배우고나서, 서블릿 필터, 스프링 인터셉터, AOP가 모두 선언이 되어 있는 경우 AOP가 동작하는 시점에 대해 질문을 드리고자 글을 남깁니다. [강의 자료에서 가져온 필터, 인터셉터의 동작 과정] HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 동작 과정을 보다가 문득 든 생각입니다. '그럼 AOP는 어느 구간에서 요청을 캐치해서 동작하는거지?' 예를 들어, 공통 관심 사항(메소드 실행시간 체크)을 처리하는 AOP를 @Around(핵심 기능 실행 전/후 동작)로 선언했다면 AOP가 동작하는 과정은 아래 과정이 맞을까요? HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> AOP -> 컨트롤러 무조건 위 과정이 맞는지 아니면 공통 관심 사항을 적용하는 방법(메소드 실행 전, 후, 전+후)에 따라 바뀌는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HomeConroller의 핸들러 메소드에서 로그인 정보를 담는 member 객체에 대한 질문입니다.
안녕하세요, 로그인 처리2 - 필터, 인터셉터 파트의 'ArgumentResolver' 활용편에서 궁금한 사항이 있어 질문 글을 작성해 봅니다. HomeController에서 '/' URL에 대한 핸들러 메소드 선언시 'member' 파라미터에 대해서는 @Login 어노테이션을 선언하여 직접 구현한 LoginMemberArgumentResolver를 통해 세션에 담긴 로그인 객체를 바인딩(?) 시켜주는 과정을 확인할 수 있었습니다. 만약, HomeController에서 '/' URL 요청 매핑 외 다른 URL 요청 매핑을 처리할 수 있는 여러 핸들러 메소드가 선언되고, 기획자 또는 클라이언트의 요구사항에 따라 HomeController에서 처리되는 모든 핸들러 메소드에 대해서는 로그인 객체를 이용하여 무언가 분기 처리를 해야하는 로직이 포함되어 있어야 한다면(분기 처리는 각기 다른 로직을 포함하고 있습니다.) HomeController에 존재하는 모든 핸들러 메소드의 파라미터로 '@Login Member member'가 선언이 되어야 할 것 같다라는 생각이 들었습니다. 이 또한 반복적인 코드가 아닐까 싶은데요. HomeController에서 '전역적'으로 로그인 정보를 포함하고 있는 객체를 선언하고, 이를 핸들러 파라미터로 굳이 선언하지 않아도, 각 핸들러 메소드에서 사용할 수 있는 방법이 있을까요? P.S HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 흐름을 생각해 보면... 서블릿 필터 또는 인터셉터를 통해 매 요청에 세션에 담긴 로그인 정보를 핸들러 메소드에 각각 다시 주입(?) 시켜줘야 할 것 같은데 실무에서 보통 이렇게 처리하는지 아니면 다른 방법이 있는지 궁금합니다. 미리 답변 감사드립니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field 사용시 id와 name을 같이 변경하는 이유가 뭘까요?
id는 css나 javascript에서 HTML element를 특정할 때 사용하는 거잖아요? 단일 css 파일이나 js 파일을 쓴다고 가정한다면 어플리케이션 전체 html 상에서 그 id는 유일성이 보장되어야지 나중에 화면이 꼬이거나 javascript가 꼬이거나 하는 일이 없을 거 같거든요. 만약 퍼블리셔나 프론트엔드 개발자가 A form에서는 <input id="itemNameA" > B form에서는 <input id="itemNameB"> 라고 잡아놓고 퍼블리싱이나 클라이언트 쪽 개발을 했다면, 나중에 백엔드 개발자가 A form에는 <form th:object = "${itemA}"> <input id="itemNameA" th:field="*{itemName}"> </form> B form에는 <form th:object = "${itemB}"> <input id="itemNameB" th:field="*{itemName}"> </form> 이렇게 해버리면 id를 서로 다른 DTO의 같은 필드명을 사용해버려서 문제가 생길 것 같은데요. 그런데 타임리프 개발자들이 id랑 name 모두 바뀌도록 설정해놓은 것은 무언가 깊은 뜻이 있어서일 것 같은데, 제가 생각하는 문제가 일어날 가능성이 없는 건가요? 제가 무언가 잘못 이해하고 있는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 메서드 질문입니다!
강사님 Order클래스에서 연관관계 메서드를 만드실 때 Member에 대한 연관관계 메서드의 경우 public void setMember(Member member)라고 하셨는데 그 이전에 lombok으로 이미 setter를 만들어 주셨는데 그렇게 되면 lombok으로 만든 setter는 연관관계 메서드에 의해 무시가 되는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
form tag중 action에서 질문이 있습니다.
회원 등록시 html form에는 action="/members/new"로 되어있는데 <form role="form" action="/members/new" th:object="${memberForm}" method="post"> --- 새로운 아이템 등록시 html form에는 action="@{/items/movie/new}"로 되어있습니다. <form th:action="@{/items/movie/new}" th:object="${form}" method="post"> 이 '{@"" }'의 차이가 뭔지 왜 빼거나 넣으면 작동이 안되는지 이유와 역활을 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 데이터 JPA
totalCount는 어디서 쓰이나요?
페이징하면 제일 먼저 생각나는게 영한님이 말씀하신것 처럼 게시판의 페이징 기능이 생각이 납니다. Member가 m1~m5까지 있을때 이름, 나이 m1 AAA 10 m2 BBB 10 m3 CCC 10 m4 DDD 10 m5 EEE 10 이렇게 나이는 동일하고 이름만 다른 조건이 있다고 했을 경우 강의에서 offset과 limit을 활용하여 3개씩 잘라서 1 page = m1,m2,m3 2page = m4,m5 이렇게 나누는것 까지는 잘 이해가 됐습니다. 하지만 이때 totalCount는 강의내용을 참고하면 age가 같은 사람의 개수이니 5 라는 숫자가 나오게 되는데요 이 totalCount는 어디서 쓰이는건가요? 제가 생각하는 페이징에는 offset과 limit만 있어도 게시글 다음페이지 이런걸 할 수 있을거 같은데 어디서 쓰이는지 궁금합니다 ㅎㅎ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello-template.html 질문입니다!!
안녕하세요! spring 입문 동영상을 시청 중인 학생입니다. /hello-template.html <html xmlns:th="http://www.thymeleaf.org"> <body> <p th:text="'hello ' +${name}">hello! empty</p> </body> </html> 위 파일에서 p 태그 안에 굳이 hello! empty를 넣어주는 이유는 뭔가요? hello! empty 부분을 지워도 잘 작동하더라구요... 개발자 입장에서 해석하기 위한 용도인가요? 별건 아니지만 해당 text를 추가한 이유가 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 숙련도 향상 관련
영한님이 조언해주신 것 처럼 Spring data jpa 익히기 전에 JPA 먼저 제대로 숙지하고 넘어가고자 하는데요. 강의에서 빠른 수업 진행을 위해 간략히 구성한것들 full로 구현해보는 것 외에 추가적으로 학습하기 좋은 방법이 잇을까요? 개인적으로 공부하는거라 실무에 적용해 볼수가 없어 질문드립니다. 답변주시면 감사드리겠습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
AOP와 서블릿 필터/스프링 인터셉터의 사용 시점에 대한 질문입니다.
안녕하세요. 서블릿 필터 - 소개 강의 내용 4:45 부분에서 '웹과 관련된 공통 관심사는 AOP보다 서블릿 필터 또는 스프링 인터셉터를 이용하는 것이 좋다.' 라는 말씀을 언급해 주셨는데요. 스프링 입문 강의 파트에서 AOP에 대해서 맛보기로 다룰 때 예제 코드에서는 특정 메소드의 실행 시간을 출력해 보는 용도로써 AOP 기술을 사용해 본 적이 있습니다. 여기서 궁금한 것은 실무에서. 물론 규모에 따라 다르겠지만, 보편적으로 웹과 관련된 공통 관심사를 서블릿 필터와 스프링 인터셉터로 구현했다면 AOP를 사용하여 구현할 공통 관심사항에는 메소드 실행시간 외 어떤 것들이 있는지 궁금합니다. 미리 답변 감사드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 선생님 V2방식에대한 질문
회원등록 V2 방식을 그대로 사용하고 POSTMAN에서 POST방식으로 BODY안에 CreateMemberRequest 클래스의 필드와 같은값으로 데이터를 전송해봤습니다. 그런데 기본생성자가 없을경우에는 "org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class jpashops.ormonetwocombine.dto.RequestItemDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `jpashops.ormonetwocombine.dto.RequestItemDto` 포스트맨 에러입니다 이런 에러 구문이 나오더군요, 그런데 기본생성자를 CreateMemberRequest에 추가해주고 다시 Postman으로 전송하더니 잘되더군요, 받아온 JSON 데이터를 파싱하는데 기본생성자가 원래 필수인가요~?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
whitepage에러 질문드립니다
package mvcStructure.basic.request;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@Slf4j@Controllerpublic class RequestParamController { @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); response.getWriter().write("ok"); } @ResponseBody @RequestMapping("/request-param-v3") public String requestParamV3(@RequestParam String username, @RequestParam String age){ log.info("username = {}, age = {}", username, age); return "ok"; } //@RequestParam 생략하고 단순 타입이면 자동으로 RequestParam이라고 요청 파라미터라고 인식한다 @ResponseBody @RequestMapping("/request-param-v4") public String requestParamV34( String username, String age){ log.info("username = {}, age = {}", username, age); return "ok"; } @ResponseBody @RequestMapping("/request-param-Required") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age){ log.info("username = {}, age = {}", username, age); return "ok"; }}현재소스이고 경로는 아래와 같이 했습닌다 ===========================================properties속성은 아래와 같습니다 ============================ #mvcStructure.~~ 패키지와 그 하위 로그레벨 설정logging.level.root=infologging.level.hello.springmvc=debug==============================현재 접속하면 whitepage가 나는건 왜그런가요
-
해결됨스프링 핵심 원리 - 기본편
Provider의 정확한 역할에 대해 질문드립니다.
안녕하세요! Provider는 조회를 해주는 기능이 있고, 프로토타입은 요청을 할때마다 새로 생성이 된다는 것을 이해했습니다. 1. 그러면 프로토타입을 요청을 하고 생성된 후 생성된 빈을 찾아 반환해주는 것 까지의 모든 과정이 Provider가 혼자 수행하는 역할이 맞나요?(요청 및 반환) 2. 또한 이 모든 과정 자체를 DL이라고 볼 수 있는건가요?(생성된 것만을 조회하는것이 아닌 더 넓은 의미로, 처음 요청(조회)하여 생성하고 반환 해주는 것까지 DL이라고 볼 수 있는지) 아니면 요청하고 생성하는 것은 제외한 생성된 빈을 조회하여 반환해주는 것까지의 과정이 DL인가요? 3. getObjetct() 등으로 요청을 한 뒤에, 빈이 생성되는게 맞나요?(순서가 맞나요?) 4. ObjectProvider<PrototypeBean> prototypeBeanProvider @Autowired로 주입 받아서 new 같은 초기화를 안해도 되나요? 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
에러 URL질문있습니다.
현재 error-401치고 들어가면 강의대로라면 4xx 오류 화면 ~~~라고 떠야되는데 404로 뜨고 있는 현상입니다. 왜 그런지 알 수 있을까요?? 현재 ServletExController에 /error-401이 등록되어 있지 않아서 그런건가요?? 만약에 그렇다면 강의에서 404이외에 4xx대의 URL은 4xx.html이 뜬다고 말씀해주셨는데 이해가 되지 않습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
다시 복습하려고 프로젝트 다시 켰는데 오류가 뜹니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1편 완강하고 2편으로 넘어가서 보다가 다시 1편 다시 복습하려고 인텔리제이를 2편에서 새로 만들던 프로젝트 닫기하고 1편에서 공부하면서 만들어서 타이핑 쳤던 servlet 프로젝트를 켰는데 서블릿 프레임워크 들이 다 어디로 삭제되었는지 어디서 오류가 발생했는지 import 되어야 할 부분이 다 빨갛게 변했습니다. Alt + Shift + Enter 나 Find JAR on Web 등 마우스 커서 올려서 눌러볼 수 있는 걸로 해결하려고 해도 방안을 못찾고 있습니다. 프로젝트를 삭제하고 다시 만들어야 하나요? 되살릴 수 없는 방법 있을가요? 그 동안 스프링MVC 1편에서 만들었던 프로젝트에서 모든 클래스가 다 빨갛게 변했습니다 ㅠㅜ Run on Server 돌리면 클래스를 찾을 수 없다고 나오는데 어떻게 해야할지 못 찾겠습니다..ㅠㅜ 중간에 강의보면서 구글링 검색하고, build.gradle -> dependencies 에 빠진 항목 있나 살펴보다가 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 를 확인하고 타이핑 쳐서 적용하고 다시 실행하면 빨간 색 글씨는 다시 원래대로 정상으로 돌아가는데 spring 은 구동은 되는데, 어디서 부터 에러가 발생했는데, 버젼이 안 맞는건지, 여기서 부터 잘 모르겠습니다.... 콘솔창에는 이렇게 나옵니다. ------------------------------------------------------------------------------------ 2021-07-20 16:51:39.087 WARN 38188 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet 2021-07-20 16:51:39.103 INFO 38188 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-07-20 16:51:39.145 ERROR 38188 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:337) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1336) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1325) ~[spring-boot-2.5.0.jar:2.5.0] at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.7.jar:5.3.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.7.jar:5.3.7] ... 13 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] ... 20 common frames omitted
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.yml이 아닌 application.properties 쓰시는 분은 이거 쓰시면 됩니다!
스프링 생성시 버전이 높아 application.properties로 생성되시는 분은 yml쓰셔도 되고 아님 properties 파일에 밑에 복붙하시면 되세요! # H2 설정spring.datasource.url=jdbc:h2:tcp://localhost/~/jpashopspring.datasource.username=saspring.datasource.password=spring.datasource.driver-class-name=org.h2.Driver# JPA 설정spring.jpa.hibernate.ddl-auto=createspring.jpa.properties.hibernate.format_sql=true# Log 설정logging.level.org.hibernate.SQL=debuglogging.level.org.hibernate.type=trace
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
id값을 Long 타입으로 지정하는 이유가 따로 있나요??
강의를 보면서 계속 궁금했던 건데 id 값을 int가 아닌 Long 타입으로 하는 이유가 뭔지 궁금합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute 질문 있습니다.
안녕하세요 영한님 강의 정말 잘 보고 있습니다!! 다름이 아니라 MemberController의 addForm 메서드 파라미터를 @ModelAttribute("member") Member member 위와 같이 받으신 이유가 단순히 아래와 같이 Model을 파라미터로 받아서 직접 추가하는 것과 같은 효과를 내기 때문인가요? @GetMapping("/add") public String addForm(Model model) { model.addAttribute("member", new Member()); return "members/addMemberForm"; }
-
미해결스프링 핵심 원리 - 기본편
@Autowired를 보다보니 질문이 있습니다.
안녕하세요, 1년차 웹개발자로 일하고있는 영한님 제자입니다. 역할과 구현체에 대한 부분이 객체지향에서 가장 중요한 것 같은데 제가 하는 업무에서는 @Autowired로 퉁쳐서 하나의 역할에 하나의 구현체만 묶는? 경우가 많은 것 같아요. 이게 웹개발 SI 업계의 특징인지 아님 제가 잘못 코딩하고있는 건 지 궁금합니다. 게시판을 만들 때 제가 본 대부분의 코드는 하나의 컨트롤러에서 여러개의 Interface를 @Autowired하는 경우를 많이 봤습니다. 글 게시판, 사진 게시판, 익명 게시판 등 여러개의 게시판이 있다면 그 여러가지 게시판의 기능의 최소공배수를 준비해두거나(영한님 강의 중 자동차 I/F) 각 게시판 별 I/F가 하나씩 생기는(영한님 강의 중 소나타I/F, 그랜져I/F, 테슬라I/F) 경우를 많이 봐왔어요. 그러다 보니 객체지향 언어를 다루고 있으면서도 이게 객체지향인가? 싶고 영한님 강의를 볼때 ?? 내가 보던 코드에 저걸 어떻게 써먹지? 싶었거든요. 그래서 든 생각이 위와 같은 게시판을 만든다고 했을 때, 게시판 관리 I/F(게시글 조회 I/F, 게시글 상세보기 I/F, 게시글 작성 I/F)등을 만들어 두고 각각 익명 게시글 조회 구현체, 사진게시글 조회 구현체, 이런식으로 만들어두는 것이 바람직한 객체지향 설계인가? 하는 궁금증이 생겨서 확인 차 글을 남깁니다. 질문이 두서없지만 답변 미리 감사드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
V5 에서 질문이있습니다.
여기서 oi.order.id in 을사용하셨는데욤 이곳은 배치사이즈가 안먹히나요?~~ 배치사이즈설정도 in 쿼리로 나가는걸로 이해를해서요~ List<OrderItemQueryDto> orderItems = em.createQuery( "select new jpabook.jpashop.repository.order.query.OrderItemQueryDto " + " ( oi.order.id, i.name, oi.orderPrice, oi.count )" + "from OrderItem oi " + " join oi.item i " + " where oi.order.id in :orderIds ", OrderItemQueryDto.class) .setParameter("orderIds", orderIds) .getResultList();
-
미해결스프링 핵심 원리 - 기본편
AllBeanTest 에서 에러가 발생합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 밑의 분과 동일한 에러가 발생합니다. 빈을 조회하지 못하는 것인지 policyMap = { } policies = [ ] 로 빈이 저장되지 않습니다 https://drive.google.com/file/d/1wsrJKX-C_Ev0a3kSNALiP3YUhhl4NE6_/view?usp=sharing zip 파일 링크 입니다. 감사합니다.