JPA2 OSIV와 지연로딩(feat. SSE) 문제 배경프로젝트 기능 중 사용자가 동영상 업로드 시 AWS MediaConvert가 변환을 모두 완료하여 저장됨을 알리기 위해 SSE를 사용하였다. SSE는 간단하게 설명하면 HTTP의 비연결성을 해결하기 위해 서버와 클라이언트 간 연결을 해주는 것이다. Socket과의 차이점은 서버만 클라이언트로 데이터를 보낼 수 있는 단방향 통신이라는 점이다. 우리는 완료되었다는 알람만 보내면 되므로 해당 기술을 선택하였다. JPA의 Open-Session-In-View의 설정을 비활성화하게 된 이유는 위 SSE의 사용 때문이다. 먼저 OSIV에 대해 간략히 설명하면, OSIV의 활성화 여부는 JPA의 영속성 컨텍스트의 범위를 지정해 준다.OSIV를 활성화하게 되면 Servlet Container의 Filter부분.. 2025. 2. 22. JPA로 인한 테스트 실패 안녕하세요, 개발자 여러분. 오늘은 JPA를 사용하면서 겪은 재미있는 문제 상황과 그 해결 과정을 공유하고자 합니다. 문제 상황최근 프로젝트에서 JPA를 사용하여 엔티티의 soft delete 기능을 구현했습니다. @SQLDelete 어노테이션을 사용하여 삭제 쿼리를 커스터마이징하고, @SQLRestriction을 통해 삭제된 엔티티를 조회에서 제외하도록 설정했습니다. 그리고 다음과 같은 테스트 코드를 작성했습니다: 예상치 못한 결과테스트를 실행했을 때, 예상과 다른 결과가 나왔습니다. isDeleted() 메서드가 false를 반환한 것입니다. 원인 분석 이 문제의 원인을 분석해보니, 다음과 같은 점들을 놓쳤다는 것을 깨달았습니다:영속성 컨텍스트와 데이터베이스의 불일치: @SQLDelete는 데이.. 2024. 8. 13. 이전 1 다음