묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Querydsl 레포지토리 분리
안녕하세요 영한님! 저는 V4 방식으로 조회를 할 때, 주로 querydsl을 사용해서 쿼리를 작성합니다. (new 키워드도 제거할 수 있고, 좀 더 직관적인 이유 때문입니다.)이런 경우 쿼리용 레포지토리를 분리할 때 쿼리 레포지토리용 CustomRepository를 따로 작성해줘야 하나요?? 엔티티 조회용OrderRepository CustomOrderRepository 쿼리 조회용 (DTO)OrderQueryRepository CustomOrderQueryRepository
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mvc 관련질문/500에러뜹니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 내용]강의 보면서 똑같이 따라써도 계속 오류가납니다(@RequestParam("name")String name, Model model)이것도 써봤는데 안되어서 혹시 몰라 required=false로해봐도 안됩니다.. 어느게 문제인지 모르겠습니다 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문조회 질문입니다.
자바 17로 하면 아래같이 코드를 캐스캐이드 하라고 나옵니다. cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); 이부분은 캐스캐이드 해줘도 빨간줄이 나옵니다. 혹시 17버전으로 작동되는 코드는 어떤것이 있을까요? package jpabook.jpashop.repository;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import jakarta.persistence.criteria.*;import jpabook.jpashop.domains.Order;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.util.StringUtils;import java.util.ArrayList;import java.util.List;import java.util.function.Predicate;@Repository@RequiredArgsConstructorpublic class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order fineOne(Long id){ return em.find(Order.class,id); }// public List<Order> findAllByString(OrderSearch orderSearch){// QOrder order=QOrder.order;//// } /** * JPA Criteria */ public List<Order> findAllByCriteria(OrderSearch orderSearch) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); Root<Order> o = cq.from(Order.class); Join<Object, Object> m = o.join("member", JoinType.INNER); List<Predicate> criteria = new ArrayList<>(); //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { Predicate status = (Predicate) cb.equal(o.get("status"), orderSearch.getOrderStatus()); criteria.add(status); } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { Predicate name = (Predicate) cb.like(m.<String>get("name"), "%" + orderSearch.getMemberName() + "%"); criteria.add(name); } cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); TypedQuery<Order> query = em.createQuery(cq).setMaxResults(1000); return query.getResultList(); }}
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
재고수량 초과 테스트 InvalidDataAccessApiUsageException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]재고수량 초과할 때 NotEnoughStockException 예외가 터져야 하는데 InvalidDataAccessApiUsageException 예외가 나오네요에러 메세지와 코드 첨부하겠습니다 [error message]java.lang.Exception: Unexpected exception, expected<jpabook2.jpashop2.exception.NotEnoughStockException> but was<org.springframework.dao.InvalidDataAccessApiUsageException> at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:30) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: id to load is required for loading at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.repository.ItemRepository$$SpringCGLIB$$0.findOne(<generated>) at jpabook2.jpashop2.service.OrderService.order(OrderService.java:34) 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:351) 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:765) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392) 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:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.service.OrderService$$SpringCGLIB$$0.order(<generated>) at jpabook2.jpashop2.service.OrderServiceTest.재고수량_초과(OrderServiceTest.java:62) 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.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) ... 23 moreCaused by: java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:77) at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:43) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:206) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:160) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:149) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:112) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:149) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2424) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2390) 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.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) at jdk.proxy2/jdk.proxy2.$Proxy123.find(Unknown Source) at jpabook2.jpashop2.repository.ItemRepository.findOne(ItemRepository.java:25) 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:351) 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:765) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 55 more[코드]@Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository;@Test(expected = NotEnoughStockException.class) public void 재고수량_초과() throws Exception { //given Member member = createMember(); Item item = createBook("JPA book", 10000, 10); int orderCount = 11; //when orderService.order(member.getId(), item.getId(), orderCount); //then fail("재고 수량 부족 예외가 발생해야 한다."); }
-
미해결토비의 스프링 부트 - 이해와 원리
섹션6. 자동 구성 정보 파일 분리 강의에서 질문 있습니다
MyAutoConfigImportSelector를 ImportSelector 인터페이스를 구현하시는 강의를 보았습니다. 한가지 궁금한게 직접 스프링 부트 실행시 MyAutoConfigImportSelector가 생성되는 것을 디버깅을 통해 확인을 해보았는데, ConfigurationClassParser 클래스의 processImports 메서드라는 곳에서 일시적으로 ImportSelect 구현 클래스(MyAutoConfigImportSelector)를 인스턴스화 하는 코드를 확인하였고,그 이후, ImportSelect 구현 클래스인 MyAutoConfigImportSelector의 selectImports 메서드를 호출하는 것을 확인하였습니다. (ConfigurationClassParser 566 ~ 582 라인) 그렇다면, MyAutoConfigImportSelector의 생성자에서 classLoader를 의존성 주입 받는 것이 아니라 일시적으로 MyAutoConfigImportSelector를 인스턴스화하여 classLoader를 생성자에서 초기화하고, 그 이후에 selectImports를 호출하는걸로 봐도 될까요?라이브러리 코드를 좀더 깊게 살펴보니, 생성자에서 Environment, ResourceLoader, BeanFactory, ClassLoader 총 4가지 클래스에 대해서만 객체를 설정해주는 것을 확인할 수 있었습니다. 처음엔 classLoader를 스프링 빈 컨테이너가 알아서 의존성 주입으로 classLoader를 주입하는줄 알았는데, 생각을 해보니 의존성 주입은 스프링 빈 컨테이너가 스캔 대상인 빈들 내부에서만 의존성 주입을 하는 것으로 알고 있는데, MyAutoConfigImportSelector 같은 경우는 ApplicationContext 클래스에서 확인해보아도 빈으로 생성되지 않고 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록 강의 질문있습니다.
상품 등록 강의 5분부터 form을 넘겨줘서 추적이 가능하다고 하셨는데요.model.addAttribute("form", new BookForm()); form 이부분이 html의 form부분과 이름이 같아서 추적이 가능한건가요?
-
해결됨Spring Boot JWT Tutorial
머이렇게 안되는게많노 ㅠ
ㅠ...
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
13분 11초에서 최근 파일 보는 단축키
강사님 안녕하세요, 강의 잘듣고 있습니다. 디버깅하면서 내용을 이해하려고 하는데 따라가기가 조금 벅차네요. 13분 11초 대에 Recent files 검색하는 부분 윈도우 단축키가 무엇인지 궁금합니다. 좋은강의 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Repository Test에 관해서 질문 드립니다.
강의 다 보고 코드 복습하고 있는데 Repository 테스트를 진행한 걸 보고 의문점이 들었습니다.처음에 Jdbc, Jpa 등 DB 연결을 하지 않았을 때는 아래처럼 메소드 구현하고 테스트 한 것으로 이해했습니다.(1) DB와 연동되어있지 않은 클래스 테스트 (in-memory-database(IMDB))MemberRepository -> MemoryMemberRepository 구현 -> MemoryMemberRepositoryTest 테스트그렇다면 만약 Jpa를 구현하게 된다면 어떻게 테스트를 진행해야 할지 궁금합니다.Jpa를 사용하는 Repository인 경우 별개로 IMDB에서만 단위/통합 테스트를 진행하는 것이 좋을까요? 테스트를 어떻게 해야할지 생각해봤는데 (1), (2) 둘 중에 어느 방안으로 진행해야 할까요?(2) Jpa로 구현되어있는 클래스 테스트MemberRepository -> JpaMemberRepository 구현 -> JpaMemberRepositoryTest 테스트 그리고 Repository로 단위 테스트 진행 후, 통합 테스트도 진행이 필요한지 궁금합니다.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
spring boot 3.0 이후 handleMethodArgumentNotValid 메소드
안녕하세요 강사님좋은 강의 감사드립니다. 스프링부트 3.0 이후부터는 오버라이딩한 handleMethodArgumentNotValid 메소드를 타지 않아 강의에서처럼 동작을 하지 않습니다.다음과 같이 코드를 짜도 에러가 나면서 서버가 죽어버리는데 어떻게 해야 되나요? @ExceptionHandler(BindException.class) public final ResponseEntity<Object> handleMethodArgumentNotValidException(BindException ex) { ExceptionResponse exceptionResponse = new ExceptionResponse(LocalDateTime.now(), ex.getMessage() , ex.getBindingResult().toString()); // 클라이언트에게 상세정보 안보여주도록 false return new ResponseEntity<>(exceptionResponse, HttpStatus.NOT_FOUND); }에러 내용Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerExceptionResolver]: Factory method 'handlerExceptionResolver' threw exception with message: Ambiguous @ExceptionHandler method mapped for [class org.springframework.validation.BindException]: {public final org.springframework.http.ResponseEntity com.example.myrestfulservice.exception.CustomizedResponseEntityExceptionHandler.handleMethodArgumentNotValidException(org.springframework.validation.BindException), public final org.springframework.http.ResponseEntity org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleException(java.lang.Exception,org.springframework.web.context.request.WebRequest) throws java.lang.Exception} at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:177) ~[spring-beans-6.1.5.jar:6.1.5] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ~[spring-beans-6.1.5.jar:6.1.5] ... 24 common frames omitted Caused by: java.lang.IllegalStateException: Ambiguous @ExceptionHandler method mapped for [class org.springframework.validation.BindException]: {public final org.springframework.http.ResponseEntity com.example.myrestfulservice.exception.CustomizedResponseEntityExceptionHandler.handleMethodArgumentNotValidException(org.springframework.validation.BindException), public final org.springframework.http.ResponseEntity org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleException(java.lang.Exception,org.springframework.web.context.request.WebRequest) throws java.lang.Exception} at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.addExceptionMapping(ExceptionHandlerMethodResolver.java:114) ~[spring-web-6.1.5.jar:6.1.5] at org.springframework.web.method.annotation.ExceptionHandlerMethodResolver.<init>(ExceptionHandlerMethodResolver.java:78) ~[spring-web-6.1.5.jar:6.1.5] at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.initExceptionHandlerAdviceCache(ExceptionHandlerExceptionResolver.java:289) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.afterPropertiesSet(ExceptionHandlerExceptionResolver.java:256) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHandlerExceptionResolvers(WebMvcConfigurationSupport.java:1063) ~[spring-webmvc-6.1.5.jar:6.1.5] at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.handlerExceptionResolver(WebMvcConfigurationSupport.java:1005) ~[spring-webmvc-6.1.5.jar:6.1.5] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140) ~[spring-beans-6.1.5.jar:6.1.5] ... 25 common frames omitted
-
미해결스프링 배치
연속적이지 않은 Id의 Partitioner
안녕하세요.partitioner 강의를 듣다가 스프링 배치에서 제공하는 샘플 ColumnRangePartitioner을 확인했습니다.해당 파티셔너의 경우 연속적인 Id일 경우에는 파티션에 균등하게 분배를 할 수 있을텐데요. 중간에 삭제된 아이디가 있을 때는 어떻게 해야 균등하게 분배를 할 수 있을까요?[1, 2, 5, 7, 10, 11, 12, 13, 15, 17, 19, 20] ColumnRangePartitioner를 사용했을 때 파티션[1, 2, 5], [7, 10], [11, 12, 13, 15], [17, 19, 20] 균등하게 분배되는 파티션[1, 2, 5], [7, 10, 11], [12, 13, 15], [17, 19, 20] 아니면 ColumnRangePartitioner을 사용하고 어느정도 균등하게 분배되는거는 포기하고 사용해야할지 의견이 궁급합니다
-
해결됨스프링 배치
ItemReader에서 chunkSize의 두 사용 방법 비교
안녕하세요~ 강의 잘 들었습니다!다름이 아니라 ItemReader를 구현하는 과정에서 궁금한 게 생겨 질문드립니다.상황 1)chunkSize가 2000이면서 ItemReader에서는 1개의 row만 DB로부터 읽어 1개의 객체씩 반환하는 ItemReader상황 2)chunkSize가 1이면서 ItemReader에서는 2000개의 row를 DB로부터 읽어 2000개의 객체가 포함된 1개의 List 객체를 반환하는 ItemReader두 상황 다 DB커넥션은 1번만 맺고 쿼리를 실행할 것 같긴 한데DB 입장에서는 둘 중 어느 상황을 더 빨리 처리할지,또 코드 상으로는 둘 중 어느 방식으로 구현하는 게 유지보수나 외 측면에서 좋을지,또 어느 방식으로 ItemReader를 구현해야 성능 상 더 좋을지 궁금합니다!
-
미해결스프링 부트 - 핵심 원리와 활용
왜 강의에서 웹서버라고 말씀하신건지 궁금합니다
ai가 계속 답변주니 답답하네요ㅠㅠ 웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결스프링 부트 - 핵심 원리와 활용
왜 웹서버라고 하나요?
웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 를 왜 cmd에서 해야하는건가요?
gradlew build 를 왜 cmd에서 해야하는건가요?편리해서 그렇게 하는건지인텔리제이 안에서 세모버튼 누르면 되는데 왜 cmd에 하는지 모르겠어요수업자료에 나와있는것처럼 똑같이 실행했는데강사님 화면이랑 다르고,로컬호스트도 안뜨고어떻게 하는건지 잘 이해가 안돼요
-
미해결스프링 부트 - 핵심 원리와 활용
왜 웹서버라 하나요?
웹 서버와 스프링 부트 소개 강의를 보면..웹어플리케이션 서버를 웹서버라 부르는 이유톰캣은 WAS인데 웹어플리케이션 서버인데..강의안에서 계속 WAS를 웹서버라고 하시는데이유가 뭔지 궁금합니다..WAS안에 웹서버가 들어있어서 그런건가요?요청 순서요청이 오면 무조건 웹어플리케이션 안의 웹서버로 요청이 먼저오고 그 요청을 서블릿 컨테이너로 다시 넘기는 건가요? 3. 웹서버가 2개 인경우마지막 그림을 보시면 웹서버가 외부에 하나 있고 그 요청이WAS로 들어가는데 WAS 안에 는 사실 또 하나의 웹서버가 있지 않나요? 그러면 요청 순서가클라이언트 - 외부 웹서버 - 내장 웹서버 - 서블릿컨테이너 - 스프링 이런식으로 흘러갈까요..?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
db사용시에 그냥 워크벤치로 해도되나요?
db사용시에 그냥 워크벤치로 해도되나요?그럼 따로 인텔리제이랑 연결하는건 없는건지 궁금합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
완성 코드에도 도서관 프론트엔드 소스가 html 파일에 안보이는데
7강 듣는 중에 갑자기 완성된 도서관 UI를 보여주셨는데 해당 index.html에는 해당 소스 코드가 확인이 안되는데 어디서 소스코드를 얻을 수 있는건가요 ? 아니면 뒤에서 같이 개발을 하는건가요 ? 완성본 소스 코드에서도 index.html 에서 해당 ui 코드 확인이 안되어서 물어봅니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
자바버전
자바 17버전으로 사용하고 싶은데 꼭 11버전만 사용해야할까요?
-
미해결실전! 스프링 데이터 JPA
Member 엔티티의 연관관계 메서드에 대해 질문드립니다.
Member 엔티티의 연관관계 메서드(changeTeam)는 멤버가 기존에 속한 팀을 매개변수로 전달한 새로운 팀으로 변경합니다. 그런데 기존에 속한 팀의 리스트에서 멤버를 제거해주는 작업도 추가해줘야 하지 않나 싶은데, 예제기 때문에 단순화하기 위해 생락햐신건가요? private void changeTeam(Team team) { this.team = team; team.getMembers().add(this); // add()로 추가는 했지만, 기존의 팀에서 제거하는 코드는 없음 }