기본 방식(lazy loading)으로 패치가 되지 않는 문제점
358
작성한 질문수 10
@EntityGraph(value="Study.withAll", type = EntityGraph.EntityGraphType.LOAD)
Study findByPath(String path)
답변 3
0
뷰 랜더링 전에 study의 manager 정보를 출력을 해보았습니다.
@GetMapping("/study/{path}")
public String viewStudy(@CurrentUser Account account, Model model, @PathVariable String path){
Study study = studyService.getStudy(path);
model.addAttribute(account);
model.addAttribute(study);
log.info(study.getManagers().toString()); // study의 Manager 정보가 잘 패치 되는지 확인
return "study/view";
}
lazy loading에 의해서 study 테이블 쿼리 한번, study_manager 테이블 쿼리 한번으로, 쿼리는 정상적으로 출력이 되었습니다.
하지만 당연히 해당 코드에서 에러가 발생하였고, 에러 내용은 다음과 같았습니다.
log.info(study.getManagers().toString());
에러에서는 Large Objects 는 자동 커밋모드에서 사용할 수 없다고 말하고 있습니다!
해당 문제로 인해서 manager 정보가 제대로 패치가 되지 않는 것 같습니다.
다음은 웹페이지 상의 에러입니다!
마찬가지로 lob stream 에 접근할 수 없다고 합니다.
참고로 조인 테이블에는 해당 study에 대한 manager 정보가 잘 저장이 되어있습니다!
0
managers()."toString()" 이 안에 어떤 코드가 들어있나요? toString()에서 하는 일을 manager의 이름 정도만 출력하는 코드로 바꾸고 다시 실행해 보시겠어요? 어디서 LOB 데이터를 읽어오는 것인지 잘 모르겠네요. LOB 타입의 데이터는 여러 레코드에 저장될 수 있기 때문에 트랜잭션을 사용해서 접근해야 합니다.
0
기선님이 말씀하신대로 manager의 이름을 리스트로 출력하는 코드로 테스트를 해보았습니다.
@GetMapping("/study/{path}")
public String viewStudy(@CurrentUser Account account, Model model, @PathVariable String path){
Study study = studyService.getStudy(path);
model.addAttribute(account);
model.addAttribute(study);
log.info(study.getManagersName().toString());
return "study/view";
}
public List<String> getManagersName(){
return this.managers.stream().map(Account :: getNickname).collect(Collectors.toList());
}
하지만 마찬가지로 동일한 에러가 발생하는 것을 알 수 있었습니다.
manager 정보를 lazy로 가져오지 않고, @EntitiyGraph를 통해서 EntityGraph.EntityGraphType.LOAD 타입으로 가져왔을 때는 이상이 없었습니다!
이 두 차이점으로 인한 원인을 찾으려고 하고 있으나 아직 제 지식이 부족한 것 같습니다
더 학습하면서 해결해보도록 하겠습니다 : )
0
안녕하세요. 기선님!
제가 질문할때 오타가 있었네요. account_manager 테이블이 아니라 study_manager 테이블이었습니다.
질문 게시글과 마찬가지로 study_manager 테이블에 해당 study에 대한 manager 객체가 존재하는데도 패치가 되지 않았었습니다!
동일한 study_manager 테이블에 대해서 @EntitiyGraph를 통해서 study 객체와 한번에 전부 패치 받을때는 잘 받아와지는데 Lazy loading으로는 패치가 안되었네요!
0
안녕하세요. 해당 스터디와 관련있는 manager에 대한 데이터가 없기 때문에 lazy loading을 하지 않은것으로 보입니다. tag나 zones 처럼 데이터를 추가하고 다시 해보시겠어요?
Study 개설하는 로직에 대해서 궁금점이 있습니다.
0
71
1
앱 재시작 후 회원가입
0
120
1
app.host 관련 질문이 있습니다
0
106
1
강의 버전 정보
0
136
1
event, study 참조
0
236
2
비밀번호 변경 로직 질문있습니다.
0
143
1
프로필 수정 처리 merge 질문입니다.
0
115
1
회원가입 성공 후 redirect이동시 권한 질문
0
509
3
HtmlEmailService 개발하다 생긴 의문입니다
0
260
2
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
0
437
2
수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다
0
271
2
[긴급-재업로드]수업질문 로그인 안 되는 문제
0
243
1
[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요
0
284
1
cropper 오류 문제로 질문드립니다..
0
294
2
authentication관련 질문...
0
503
2
모임참가 취소 할때 로직 질문
0
359
3
안녕하세요 기선님 질문이있습니다..
0
236
1
HTML코드 및 강의 중간자료들
0
687
3
springSecurity
0
529
2
버전 질문입니다.
0
308
1
부트스트랩, css
0
361
2
영속성 컨텍스트 질문
0
255
2
다시 강의를 보니 드는생각..
0
357
2
5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?
0
320
1





