분류 전체보기(185)
-
JPQL 중급 문법
보호되어 있는 글입니다.
2024.02.20 -
JPQL 기초
보호되어 있는 글입니다.
2024.02.20 -
OSIV - DB Transaction의 지속 범위
[ OSIV 개념 익히기 ] OSIV는 open-session-in-view의 줄인 말으로 OSIV 옵션이 켜져있으면 트랜잭션이 애플리케이션 어디서든 유지되게 해준다. 반대로 OSIV 옵션이 꺼져있으면 트랜잭션이 service와 repository 계층에서만 살아있다. OSIV 생명 주기: OSIV 옵션은 자동적으로는 켜져있다. 일반적으로 Bean에 등록된 어디서든 Entity를 수정하면 영속성 컨텍스트가 관리하는 범위 내에 있기 때문에 지연로딩으로 값을 가져올 수 있다. 그렇기 때문에 웬만해서는 LazyInitializationException 에러가 나는 경우는 OSIV 옵션이 켜진 상태에서는 일어나지 않는다. 만약에 값을 끄고 싶다면 다음과 같이 application.yml이든 어딘가에 다음처럼 코..
2024.02.19 -
xToMany 관계를 가지는 API 설계의 최적화
보호되어 있는 글입니다.
2024.02.19 -
JPA 프로그래밍 - LazyInitializationException
[ 문제 상황 ] 문제 상황에 대해서는 기본적으로 JPA 코드를 Entity부터 Controller까지 작성할 줄 안다고 가정하고 작성하였다. 이 부분을 잘 모른다면 글을 읽기 전에 공부하기를 바란다. 복습을 하던 도중 이전에 잘됐던 Controller 내부의 코드가 잘 작동하지 않았다. 해당 API를 PostMan으로 돌려보면 500번 에러와 함께 제목에 적힌 LazyInitializationException 에러가 뜨는데, 이 현상이 일어난 이유와 해결방안에 대해서 알아보고자 한다. @GetMapping("/api/v2/simple-orders") public List ordersV2(){ List orders = orderRepository.findAllByString(new OrderSearch(..
2024.02.18 -
xToOne 관계를 가지는 API 설계의 최적화
보호되어 있는 글입니다.
2024.02.18