월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
커맨드와 쿼리의 구분 후 쿼리문 한번 더 실행에서의 궁금증...
강의에서 영한님께서는 커맨드와 쿼리를 구분하는 것을 선호하신다고 하셨습니다. 그래서 알아보니 이런걸 CQRS라고 하던데 회원 정보를 update시 update command 메소드 실행 후 보통같으면 update메소드 자체의 반환값으로 member객체나 member id를 받는데, 이것을 명령과 질의를 구분해 memberService.update() 후 memberService.findOne을 실행하면 결과적으로 쿼리문을 한번 더 실행을 하게 되잖아요? update 메소드 내에서도 findOne이라는 메소드를 호출하니깐요. 이렇게 명령과 질의를 분리하였지만 그 대가로 쿼리문을 한번 더 호출하게 된 셈인데 쿼리문을 한번 더 호출해서 명령과 질의를 구분하는 것이 많이 효율적인 패턴인가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Dto 관련 질문있습니다.
SimpleOrderDto같은 Dto일 경우 내부 클래스 말고 그냥 외 부에 따로 클래스 만들어 놓고 사용해도 되나요?? 안된다면 굳이 내부 클래스로 만들면 좋은 점은 뭐가 있는지 궁 금합니다!!
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
소스코드 제공여부
안녕하세요, 1편에서는 소스코드를 파일로 제공받았는데요. 2편은 소스코드를 제공하지 않는것인가요? 원래 저같은 경우는 개발하기전에 레거시 코드를 먼저 분석하고 뜯고 즐기며 개발하는 성격이라.. 소스코드가 파일로 주어지지 않아서 좀 불편하네요ㅠㅠ 회사를 다니면서 강의를 처음부터 다 따라듣기 시간적으로 힘들어서 코드를 쭉 혼자 분석하다가 막히는 파트에 대해서 강의를 들으려 신청했습니다.. 파일로 소스코드 제공해주시는거 검토 한번 부탁드려도 될까요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
트랜잭션과 영속성 컨텍스트
안녕하세요 선생님! 선생님의 강의를 듣고 프로젝트를 하다가 의문점이 생겨서 질문을 드립니다. 예를들어 하나의 컨트롤러에서 여러개의 서비스 계층의 트랜잭션을 사용할 경우 컨트롤러에서 사용되는 트랜잭션은 하나의 영속성 컨텍스트에서 관리 되나요? 즉, 컨트롤러 계층에서 생성되는 트랜잭션은 view에 넘어가기 전까지 같은 영속성 컨텍스트에 존재하는가요? 아니면 컨트롤러에서 영속성 컨텍스트는 트랜잭션과 1:1 인가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
데이터 JPA 를 듣다가 다시 와서 질문남깁니다~
아래에 질문 두개 있습니다! order , orderItem , item 엔티티를 자연쿼리 + projection 을이용해서 페이징을 해봤는데요! projectionDto JPARespository controller 일대 다대 일 관계를 자연쿼리 프로젝션 으로 페이징을 size=2 로하여 2건만 가져오려 합니다. 결과는 같은 아이디인 order_id : 4인 2개의 값이 나왔는데요, order를 기준으로 조회하여 페이징 하려면 데이터가 누락이 될텐데 질문 1) 자연쿼리 + 프로젝션으로는 컬렉션 조인 페이징을 할 수 없지만 그냥 조회용으로만은 사용가능한건가요~? (아니면 이것또한(자연+프로젝션 이용) 다대일은 다대일 끼리 조인, Lazy로딩을 이용해서 일대다를 조인시키는 방식 여기 강의에 V5 방식처럼 만들면 할수 있나요?(해봤는데 포스트맨 출력형태는 아래 사진과 같더군요 ㅠㅠ) 자연쿼리+ 프로젝션도 한계가있다고 하신거같았는데 이것도그중하나 일까요? 아니면 다른방식이있는지 궁금합니다! -------------------------------------------------------- 제가원하는 형태는 지금 v5강의처럼 이런형태였거든요! 질문 2) 다대일 ,일대일 부분끼리 조인을 하고 Lazy로딩을 이용해서 나머지 일대 다 관계를 조인하는 방식 이잖아요 ! 혹시 이렇게 컬렉션 조인을 페이징 하는방법이 쿼리DSL 부분에도 나오나요~?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
repository은 트랜젝션이 기본인가요?
예전에는 service단에서 trasaction을 걸어서 했었는데 repository에 기본적으로 @trasantional이 적용되어있나요?? 그렇기 때문에 db에서 쿼리를 해올수잇는건지 궁금합니다 ㅎㅎ 추가적으로 repository에 transation이 걸려있다면 왜 service 클래스에 이중으로 @trasational 어노테이션을 거는건가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
엔티티를 조회하는 방식과 dto를 직접조회하는 방식의 차이
강의를 보다 궁금한 점이 있어 질문 드립니다. v1,v2,v3 같은 경우에 엔티티를 조회한 뒤, dto로 변경하는 방식을 사용하였다면, v4부터는 dto를 직접 조회하는 방식을 사용하고 있는데 dto를 직접 조회하는 방식이 코드가 복잡한데 엔티티를 조회후 dto로 변환하는 방식에 비해 가지는 장점이 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
05:08초 쯤 orderItem부분에 대해 질문드립니다 !
해당부분이 NULL이 나오는건 Dto 생성자에서 orderItems = order.getOrderItems(); 했을때 OrderItems가 lazy로딩이고 프록시객체를 통해 OrderItems에 더이상 탐색을 안했기때문에 안나온게 맞나요 ??(DB쿼리가 안나갔기에) 강사님께서 엔티티 이기 때문에 안나온다 하셨는데 그게 결국 제가 말한부분에 의한건지 궁금해서 질문드립니다 !
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Hibernate5Module가 기본상태일때
하이버네이트 모듈이 기본상태일때 orderItem을 DB에서 자꾸 쿼리하는게 로그상에 보여서 질문드리는데요 이 상태에서 Order엔티티에 "orderItems" 는 1대다 관계로 묶여있어서 당연히 기본이 lazy로딩이라서 orderItems에 접근하지 않는한 DB에서 쿼리하지 않을줄 알았는데 쿼리가 나가더라구요 ..? 왜 그런걸까요 ..?? 제가 배운 내용으로는 이해가 가지 않아서 ㅠㅠ
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
pk가 아닌 컬럼과 join으로 인한 문제
해당 질문에 대한 답변에 대한 상세 질문 드립니다. 이전질문 https://www.inflearn.com/questions/255380 이전질문 답변 안녕하세요. Mincheol Ji님 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요. 추가로 다음 내용도 코멘트 부탁드립니다. 1. 실행 방법을 알려주세요. 2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요. 감사합니다. ------------------------------------------------------------------------------------------------ https://drive.google.com/file/d/1UzfBJvvymO-zxou_Ue3SKcLka_i933aZ/view?usp=sharing 샘플 프로젝트를 작성하여 만들었습니다. 1. 해당 스프링 부트를 싱행하여 localhost:8080/save rest api를 통해 데이터가 입력됩니다. 2. localhost:8080/select rest api를 통해 동록된 팀 & 멤버 정보를 조회합니다. 해당 문제점 List<Team> teams = teamRepository.findAll(); 위의 코드를 통해 team을 쿼리하여 팀 객체에 있는 맴버 객체를 가져올때 batch fetch size 옵션을 통하여 in쿼리를 통해 member쿼리로 member 정보를 가지고 옵니다. 여기까지는 문제가 없으나 member에 대한 in쿼리가 실행되고 member의 team에 대한 쿼리가 각각 실행되는 문제가 있습니다. @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.ALL) @JoinColumn(name = "TEAM_ID", referencedColumnName = "TEAM_ID", insertable = false, updatable = false) private Team team; member 엔티티에서 조인 컬럼이 pk가 아닌 컬럼과 조인을 하여 양방향을 해주었을때 이러한 문제가 나타나고 있습니다. pk가 아닌 컬럼과 조인을 해야하는 상황이 있는데 어떻게 해야할까요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
[API개발 기본 -> 회원수정API] 강의에 대한 질문입니다.
안녕하세요, 유익한 강의 잘듣고있습니다. 다름이 아니라 이해가 안되는 부분이 있어서 글을 올립니다. public UpdateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); //--> ①번 //--> 디버그 브레이크 포인트를 걸어놓은 상태에서 name 필드 강제로 변경 //-->②번 Member findMember = memberService.findOne(id);//-->③번 return new UpdateMemberResponse(findMember.getId(), findMember.getName()); } ①번 소스가 실행 ( member테이블의 name필드를 '홍길동1' 값으로 변경 ) 1) begin tran 실행 확인 2) select * frm member where id=17 --//실행확인 3) update member set name='홍길동1' where id=17 --//실행확인 4) commit tran 실행확인 ②번 소스에서 브레이크 포인트 설정 1) member 테이블 강제로 업데이트 실행 update member set name='초기화' where id=17 ③번 소스실행 1) 데이터베이스에서 select 문장이 실행되지 않음 확인 : name 값은 '홍길동1' 으로 조회가 됩니다. # 위의 확인 내용에 대한 질문사항입니다. 1) ①번과 ③번은 별도의 트렌젝션에서 실행되었는데, ③번소스 에서는 왜? 데이터베이스에 쿼리가 실행되지 않는 것인가요? 2) ③번소스 에서 강제로 데이터베이스에서 Select가 실행하여 최신데이터를 받아오고싶은경우 어떻게 해야하나요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
영속성 컨텍스트 관련 질문 드립니다!
선생님 안녕하세요^^ 강의 너무 잘 듣고 있는 수강생 입니다. API 개발 부분 수강하던 중 궁금증이 생겨 문의 드립니다. 기존 JPA 활용1 강의에서는 @Transactional이 적용되어있는 Service를 통해 Repository에 접근하여 해당 메서드의 트랜잭션 관리를 해주었었는데요. 이번 강의 같은 경우 Controller로 직접 관리를 하다보니 어느 시점에 트랜잭션 커밋이 되는지 좀 헷갈려 질문 드립니다. 추가로, Controller -> Service -> Repository 순으로 접근한다고 가정하여 프로젝트를 만든다고 할 때, Controller : api 요청/반환 관리, requestForm. responseForm 변형 관리 Service : 비즈니스 로직 관리, Repository 접근 관리 Repository : DB 접근 관리 라고 컨셉을 잡은 후 강의와 같이 구현한다고 생각해보았는데요. 이 때, Controller에서 Form 변형 관리를 한다고 하면 Service에서 Repository에 접근해 Lazy loading으로 데이터를 부른 후 Controller에 전달 했을 때, 불러온 데이터가 준영속 상태가 되어 V2 형식에서의 Form 변형은 사용하지 못하는게 아닌가 하는 생각이 들었습니다. 이럴 때를 대비하여 V3 같은 방식을 사용한다 라고 이해하였는데 잘 이해한 것일까요??
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
6분 무한루프가 뜨지않습니다.
안녕하세요 선생님 강의를 진행하던도중 에러를 만나 해결해보려 하였으나. 해결이 되지않아 질문드립니다. 해당오류를 검색하여 해결방법을 찾아본 결과 1. 엔티티의 fetch 가 lazy로 되어있으면 생긴다고 하여 EAGER로 바꾸어 보았지만 해결하지못해 질문드립니다. 오류코드입니다. 2021-07-26 23:48:13.214 ERROR 6092 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order["orderItems"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem["item"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI["hibernateLazyInitializer"])] with root cause com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order["orderItems"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem["item"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI["hibernateLazyInitializer"]) at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1277) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1512) ~[jackson-databind-2.11.4.jar:2.11.4] at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1006) ~[jackson-databind-2.11.4.jar:2.11.4] at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:454) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.5.jar:5.3.5] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.44.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.5.jar:5.3.5] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.44.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 여기서부터는 POSTMAN에 뜨는 오류입니다. "timestamp": "2021-07-26T14:48:13.221+00:00", "status": 500, "error": "Internal Server Error", "trace": "org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:460)\n\tat org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)\n\tat org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)\n\tat org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:626)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\nCaused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])\n\tat com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)\n\tat com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1277)\n\tat com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400)\n\tat com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1512)\n\tat com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1006)\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:454)\n\t... 48 more\n", "message": "Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])", "path": "/api/v1/simple-orders""timestamp": "2021-07-26T14:48:13.221+00:00", "status": 500, "error": "Internal Server Error", "trace": "org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:460)\n\tat org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)\n\tat org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)\n\tat org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:626)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\nCaused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])\n\tat com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)\n\tat com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1277)\n\tat com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71)\n\tat com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)\n\tat com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)\n\tat com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)\n\tat com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)\n\tat com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)\n\tat com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400)\n\tat com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1512)\n\tat com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1006)\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:454)\n\t... 48 more\n", "message": "Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->jpabook.jpashop.domain.Order[\"orderItems\"]->org.hibernate.collection.internal.PersistentBag[0]->jpabook.jpashop.domain.OrderItem[\"item\"]->jpabook.jpashop.domain.item.Item$HibernateProxy$RxqT9FxI[\"hibernateLazyInitializer\"])", "path": "/api/v1/simple-orders"
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Update 질문
안녕하세요. 강사님 강의 듣고 프로젝트에 적용시켜 보고 있습니다. 만약 예를들어, 상품 테이블과 추가상품 테이블이 1대 다 관계로 있다고 가정하고, 판매자 입장에서 상품을 등록한다고 합니다. 추가상품은 상품 테이블의 pk를 외래키로 받고, 예를들어 [{볼펜 : 3개}, {공책 : 2개}, {지우개 : 4개}] 이런식으로 등록된다고 합니다.(컬럼은 추가상품과 개수. 2개가 되겠죠) 그런데 여기서 판매자가 상품을 수정할때, 추가상품도 동시에 수정할수 있는데 [{볼펜 : 3개}, {공책 : 2개}, {파일 : 2개}] 이런식으로 개수가 똑같은 상태에서 수정될 경우에는 문제 없이 되는데 [{볼펜 : 4개}, {파일 : 1개}] 추가상품의 개수를 3개에서 2개로 줄이거나, 3개에서 4개로 늘려버린다면, 이럴 경우에는 상품 수정을 어떻게 해야하나요??
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ObjectOptimisticLockingFailureException
안녕하세요. 좋은 강의 제공해주셔서 감사합니다. 지금은 강의를 바탕으로 개발을 진행하고 있는데요. 궁금한 점이 생겨서 질문을 남겨봅니다. Spring Boot에 spring-data-jpa를 사용하고 있습니다. 2개의 API가 동시에 들어와 같은 row를 삭제하는 상황입니다. 이 때, 하나의 트랜잭션에서 ObjectOptimisticLockingFailureException이 발생하는데요. select한 값에 대해서 다른 트랜잭션이 이미 delete하여 delete할 row가 없다는 에러로 확인했는데요. 보통 spring-data-jpa로 delete하실 때, jpql을 사용해서 바로 delete native query가 날라가게 하시는지, 아니면 해당 에러를 따로 처리하는 방법이 있으신지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 V5 방식을 현재 강사님 SPRING DATA JPA를 듣고 변환해보려고 하는데요~
강사님 jpa활용2 수강을 마치고 강사님의 데이터 JPA 페이징 부분들 듣고있는데요~ 현재 JPA활용2편 에 페이징 V5 부분 (DTO 직접조회) 를 SPRING DATA JPA로 페이징 해보려합니다 결과 이렇게 V5의 MAP을 이용한 성능최적화를 Spring data jpa 방식으로 바꿔보았습니다. 이렇게해서 결과는 잘나옵니다만 이렇게하는것이 옳은 것 인지 확신이안가 질문남깁니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
주문조회 V3.1을 현재듣고있는 스프링데이터 JPA 식으로 바꿔보고싶습니다
삭제된 글입니다
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JPA 조회시 트랜잭션 관련 문의입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의를 다 들은 학생입니다. JPA OrderApiController 쪽 수업을 들으면서 궁금한점이 생겼는데, 기존에는 Service 단에서 @Tranctional 어노테이션을 통해 트랜잭션을 가져오는 것으로 알고있습니다. 그런데 OrderApiController에서 바로 OrderRepository를 통해 em.createQuery로 데이터를 조회하는데 트랜잭션이 사용되지 않는것 같더라구요. JPA를 사용할때 단순히 조회만 하는 경우에는 트랜잭션이 필요가 없는 건가요?? 감사합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
"엔티티 조회" 의미 질문 드립니다.
안녕하세요 강의 잘 보고 있습니다~!^^ 엔티티를 직접 노출하면 안된다고 배웠고, 그래서 지금까지 줄곧 DTO를 생성, 변환해서 API를 설계했는데요. 이번 API 개발 고급 정리에서는 DTO를 생성해서 처리하는 것보다 JPA에서 자동 처리해주는 혜택을 받으면서 엔티티로 조회하는 것이 더 괜찮을 선택일 수도 있다고 이해했습니다. 그런데 이 엔티티를 조회한다는 것이 API에서 엔티티를 직접 사용한다는 것인가요? "엔티티 조회" 가 "엔티티 직접 노출"은 아닌 것 같은데 어떤 맥락에서 "엔티티 조회"를 말하는 것인지 궁금합니다. 감사합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 숙련도 향상 관련
영한님이 조언해주신 것 처럼 Spring data jpa 익히기 전에 JPA 먼저 제대로 숙지하고 넘어가고자 하는데요. 강의에서 빠른 수업 진행을 위해 간략히 구성한것들 full로 구현해보는 것 외에 추가적으로 학습하기 좋은 방법이 잇을까요? 개인적으로 공부하는거라 실무에 적용해 볼수가 없어 질문드립니다. 답변주시면 감사드리겠습니다.