월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV false 일때 영속성 관련해서 질문드립니다.
안녕하세요 김영한 강사님, OSIV를 false로 하면 트랜잭션 라이프사이클이랑 영속성 라이프 사이클이이 같이 끝맺음을 가지는거로 이해했습니다. 그렇다면 트랜잭션 안에서 엔티티를 save메소드로 저장 한다면 트랜잭션이 끝나고난뒤에 DB에 저장하기위해 인서트문이 날라가는게 아닌가요? 트랜잭션 메소드를 끝낸뒤 로그로 엔티티는 찍히는데 디비에는 저장이안되어있어서 findBy등으로 찾아오지못해 제가 정확히 이해를 못하는것인지, 아니면 잘못 사용하고있는것인지 궁금합니다. 트랜잭션안에서 save를 한뒤 정상적으로 끝난뒤에도 디비에는 존재하지 않는 이유는 무엇인가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
orderitem proxy 초기화 시점 질문있습니다
현재 orderItem 프록시 초기화 시점이 order.getOrderItems()에서 일어나는 건가요? 아님 orderItem.getItem() 시점에서 일어나는 건가요??
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@PostConstruct 지정 함수 @Transactional 지정 시 컨텍스트 관리가 안되는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 역시 백문이 불여일타!! 강의 보고 혼자 샘플작성하다 막 터집니다. 강의 볼때는 '음~ 그렇지~' 하고 보던게 안보고 혼자 작성해보니 강사님이 말씀하시는 "이거 분명이 개발할 때 문제 발생합니다." 하는거 다 터지네요. [질문 내용] InitDB.java 샘플 따라하다가 궁금한점이 생겨 질문 드립니다. 애플리케이션 구동 시 초기 데이터를 넣기 위해 @PostConstruct 로 코드를 작성하는 부분에서 문제가 발생했습니다. "Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call" 결론은 영속성 관리가 안되는 문제인거 같습니다. 근데 @Transactional을 붙였고 내부 함수 호출도 아닌데 왜 관리가 안되냐해서 디버깅을 해봤습니다. PostConstruct 하는 부분을 따라가 보니 해당 함수를 invoke하는 클래스가 프록시가 아니더군요. InitDB의 내부 맴버는 프록시인데. 질문: PostConstruct를 호출되는 대상 클래스도 spring container에 있는 bean같은데 왜 저넘은 프록시가 아닌거죠? 다른 bean의 맴버로 주입되는 bean만 프록시인 건가요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
querydsl 사용에 질문있습니다.
안녕하세요 김영한 강사님, querydsl 사용할때, 오라클처럼 FROM DUAL이나 MySQL처럼 FROM절을 생략하려면 어떻게해야하나요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강의들으면서 @ToMany에 질문이있습니다.
안녕하세요 김영한 강사님, @XXToMany 같은 어노테이션을 사용해서 발생되 N+1의 문제를 해결하기위해 fetch를 사용하는데, 그럼 여기서,JPQL로 fetch 조인을 사용하기위해 직접 String에 사용하는 방법이면 @ToMany어노테이션을 사용하지않은 엔티티들로 JPQL에 String에 직접 FK들을 적어서 조인을 사용한 쿼리랑 차이점이 뭐가있나요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API 개발 협업 관련 질문드립니다.
안녕하세요 영한님 스프링 기본편부터 querydsl까지 들으면서 혼자 프로젝트를 진행했었고 이제 사이드 프로젝트를 하면서 다른 프론트엔드 개발자와 협업해보고 싶습니다. 구글링을 해도 원하는 정보를 얻을 수 없어서... 질문을 남겨보려고 합니다. 보통 사이드 프로젝트를 진행하면 백엔드(저)는 제 pc로, 프론트엔드 개발자분은 그 분의 pc로 개발하게 될텐데, 제가 api 개발을 마치고 깃허브에 코드를 올려놓으면 프론트분이 제 코드를 clone해서 프론트분의 로컬 환경에서 api를 테스트하는 메커니즘인가요? 또한 만약 이렇게 테스트하게 된다면, 프론트분은 db이 어떻게 접근하는지, 보통 백엔드는 api만 개발하고 테스트는 하지 않는지도 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
[문의] 비동기 처리
안녕하세요? 강의 잘 듣고 있습니다. 강사님 톤과 실무를 염두에 두고 강의하시는 점이 특히 좋네요 지금 강의를 기반으로 실무에서 답답함이 하나씩 해소가 되고 있습니다. 하지만 API 를 순차적으로 하나씩만 호출하는 것이 아니기에 비동기에 대한 부분도 추가가 되면 좋을거 같은데요 해당 강의에는 언급이 안되는거 같아 문의드립니다. 현재의 예제코드를 동기방식으로는 정상 동작하지만 비동기로 동시 호출을 할때는 안되는데 이에 대한 가이드는 어떤 강의를 참고하면 될까요? casacade 에 대한 detach 처리가 필요한거 같은데, 그걸 수정하니 여러가지 오류가 발생해서 이렇게 로직을 만든 서비스에 대한 비동기 처리가 너무 궁금하네요 ㅠ 답변 부탁드립니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV 질문드려요~
질문을 찾아봤는데 없는것 같아서 질문 드립니다! 혹시 특정 Service만 OSIV를 끄고 커넥션을 유지하는 방법은 없을까요? 이전 강의에서 hibernate.default_batch_fetch_size는 전체 사이즈를 정하고 @BatchSize처럼 개별적으로 사이즈를 정하듯이 OSIV는 개별적으로 on/off는 불가능한지 궁금합니다.
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Json 반환 시 질문 좀 드릴게요!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 실전 JPA 활용 2를 복습하다가 궁금한 점이 생겨서 질문드립니다! JSON을 반환할 때 바로 배열로 반환하면 JSON 자체의 확장성이 좋지 못해 Result라는 껍데기 역할을 하는 클래스를 만들어서 반환하는 방법을 배웠는데요. 이 때, 이 Result라는 클래스를 개별적인 클래스로 생성한 후, 모든 Controller에 공통적이게 사용해도 별 문제가 없는 건가요? 제가 아직 JSON을 통한 API 통신은 많이 미숙하여 Result 클래스 이 친구를 항상 사용해주는 것인지 그렇다면 프로젝트 구조 상 어떤 위치에 선언하여 사용하는 것이 좋은지 궁금하여 질문드립니다!
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
협업할 때
협업할 때 백엔드에서 만든 API를 어떤식으로 전달해주나요? 그리고 resources에 만든 html 같은건 넘겨주지 않나요? 어떤 것들만 넘겨주나요?
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API개발 시 WAS의 역할
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 스프링 기초부터 DB 2편까지, 그리고 JPA 기초, 실전 JPA 1편을 듣고 온 수강생입니다 계속해서 가지고 있었던 궁금증이 있었는데 여기까지 강의를 들으면서도 해답을 찾을 수 없어서 이렇게 질문을 올리게 되었습니다 리액트나 뷰 등 클라이언트에서 뷰를 구현한 상황에서 WAS는 Http 요청 응답을 받아주는 역할만 수행하는 것인가요? 그리고 리액트나 뷰 같은 아이들은 기본적으로 js로 동작하는데, 3티어 아키텍처에서는 WAS가 아닌 웹 서버가 리액트랑 뷰에 관한 파일들을 가지고 있다가 보내주는 것인가요? 강의 내용과는 조금 떨어진 질문이지만 저 같은 궁금증을 가진 사람이 없는 건지 저의 검색 능력이 부족한 것인지 구글에서 관련 정보를 찾을 수가 없어서요.. 아니면 검색어 추천이라도 해주신다면 제가 직접 찾아서 공부하겠습니다 감사합니다
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
오류
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2022-08-03 16:23:18.841 ERROR 14112 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ***************************APPLICATION FAILED TO START*************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐| initDb defined in file [C:\Users\pkl46\OneDrive\Desktop\spring\jpashop\jpashop\out\production\classes\jpabook\jpashop\InitDb.class]↑ ↓| jpabook.jpashop.InitDb$InitService└─────┘ Action: Despite circular references being allowed, the dependency cycle between beans could not be broken. Update your application to remove the dependency cycle. Process finished with exit code 1 이런 오류가 뜨면 어느 부분을 놓친 걸까요? ㅜㅜ
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
엔티티에 대해서 질문있습니다.
실전 2강의 전 실전 1강의에서 엔티티에 무분별한 생성자 생성을 막기위해 @NoArgsConstructor(access = AccessLevel.PROTECTED) 를 사용한다했는데, 지금 DTO만들어서 사용하는 예제에서 엔티티에 해당어노테이션이 없어서 생성자를 생성하시던데 뭐가맞는거에요?ㅠㅠ
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 사용방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]수업을 듣는데 궁금한 점이 생겨 질문을 올립니다. 데이터를 주고 받는 과정에서 엔티티를 직접 사용하는 것보다 DTO를 사용하는것이 더 좋다고 설명하시면서 controller 안에 필요한 class를 만들어서 사용하시는데 실제 업무에서나 일반적인 상황에서 따로 클래스를 만들어서 사용하는게 좋은지 강의에서의 방법처럼 controller안에서 필요할때 만들어서 사용하는 것이 좋은지 궁금해서 질문 올립니다.
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
벌크? 배치? update 쿼리 관련 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요. jpa 강의를 듣고 혼자서 게시판 만들면서 뚝딱거리고 있는 말하는 감자입니다. 만들고 있는 기능 중에, 게시글을 단건 조회하면 조회수 하나를 올리는 기능이 있습니다. 어차피 조회하면 DTO로 나가니까 엔티티 클래스에 수정메서드를 하나 만들어놓고 더티체킹으로 업데이트 쿼리를 날리는 식으로 만들었다가, 요청마다 업데이트 쿼리가 나가니까 성능상에서 좋지 않다고 판단했습니다. 게시판은 조회수가 돈과 직결되는 서비스가 아니라고 판단되어 즉각 반영이 아니라 지연 반영? 으로 i/o를 줄이려고 하고 있었습니다. 그래서 레디스에 모아뒀다가 10초마다 한 번씩 한꺼번에 업데이트하려고 구현하고 있는데요. jpa 업데이트 쿼리 작성을 하는 방법을 잘 모르겠어서 질문 드립니다. @Transactional@Modifying@Query("update Post p set p.hitCount = p.hitCount + :hitCounts where p.postId in :postIds")void updatePostsHitCounts(@Param("postIds") List<Long> postIds, @Param("hitCounts") List<Long> hitCounts); 짜본 쿼리는 이렇습니다. 파라미터로 postIds (게시글 PK를 담은 목록리스트), hitCounts(게시글 각각의 올려줄 조회수 목록리스트) 를 받습니다. postIds는 where... in 문법으로 하면 될 것 같은데, set 다음의 구문에서 어떻게 쿼리를 짜야 제가 의도한대로 작동이 될 지 모르겠습니다. 그래서, 지금은 메모리에 적재해두었다가 10초마다 일괄 업데이트를 하긴 하는데 PK마다 하나씩 업데이트 해주는 방식을 사용하고 있습니다. 여전히 업데이트 쿼리가 너무 많이 나가는 것은 동일해서 고민하다가 질문 남깁니다. jpa bulk update관련해서 검색해보니 insert 하는 내용만 많이 나와서 쓰기가 힘들더라구요 제가 질문을 잘 한지 모르겠네요. 부연설명이 필요하시면 말씀해주세요. 감사합니다!
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
일대 다 관계 조회 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님! 평소에 영한님 강의를 들으면서 개발 공부 열심히 하고 있는 개발자입니다. 일대다 연관관계에 대해서 궁금한 점이 있어서 여쭤봅니다. 일대다를 페치 조인하면 데이터가 뻥튀기 되어서 먼저 toOne 연관관계인 것들만 페치 조인으로 가져오고 그 다음에 @BatchSize를 사용하든 in 쿼리를 사용해서 페이징을 유지하면서 일대 다를 성능 최적화 시키면서 가지고 올 수 있다는 것은 이해를 했습니다! 그런데 궁금한 점이 생겨서 질문드립니다. 예를 들어 회원 리스트 조회 API에, member와 member_account 테이블이 있고, 한개의 멤버에 여러 개의 멤버 account가 있을 수 있는 일대 다 형식입니다 member를 기준으로 페이징을 하고 싶은데, 조회 API 검색 조건에 member와 member_account테이블을 동시에 봐야되는 요구사항이 있어서 쿼리에 member와 member_account를 join 하고 where절에 해당 테이블을 사용할 수 뿐이 없으면,이런 상황에서는 데이터가 뻥튀기 되고 member를 기준으로 페이징이 안될 것 같은데 이거는 기술적으로 해결 방법은 없고 기획적으로 접근 방법을 달리 해야되는지 궁금해서 여쭤봅니다. 긴 글 읽어주셔서 감사합니다!
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Service 계층을 안거치고 Repository로 바로 가는 이유
컨트롤러에서 서비스 계층을 거치치 않고 리포지토리를 이용하는 이유가 뭔가요?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Member의 @DynamicUpdate
@DynamicUpdate를 활용하지 않으면 Member에 대한 name만 변경했음에도 불구하고 쿼리가 날라가는 모습을 보면 Member 전체 필드에 대한 set update query가 날라가게 되는데 이러한 부분에서 @DynamicUpdate를 활용해서 원하는 필드에만 직접적으로 modify를 하는것이 더 옳은 방법인가요 아니면 그냥 name 하나만 변경함에도 불구하고 전체적인 데이터에 대한 set을 맞춰주는게 좋은 방법인가요??
- 미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컬렉션을 많이 가지고 있는 상황일때..
안녕하세요. 취준생때부터 강사님의 인강을 듣고 지금은 한 회사에 취업하여 열심히(?) 개발하고 있습니다. ㅎㅎ 제가 궁금한 것은 엔티티에 참 많은 컬랙션을 참조하고 있을때, BatchSize을 설정을 해도 지연 로딩으로 인한 쿼리가 20개씩 나가는데요. ( 설정 전에는 쿼리가 300개...) 여기서 JPA를 통해 최적화 하는 방법은 더 없을까요? 없다면 캐싱이나 설계를 바꾸는 방법밖에 없는 것이겠죠?
- 해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
조회 질문입니다.
안녕하세요 강사님 강의를 듣고 혼자 조회를 만들고 테스트를 진행하다가 궁금한 것이 생겨 질문을 남기게 되었습니다. A, B, C 라는 서비스 클래스가 있고 A, B 클래스에 만든 비즈니스 로직을 C 서비스 클래스에서 사용하고 싶어 C 서비스 클래스에서 A,B를 참조해서 사용할 경우 어떻게 처리하는 것이 가장 좋은 것인 지 궁금합니다. 읽어주셔서 감사합니다.