본문 바로가기

JPA

따닥 이슈와persist context flush 귀뽀연님이 겪으신 이슈를 공유받다가 해결했던 경험을 기록해두려고합니다. 상황은 이러했습니다. 클라이언트에서 따닥이슈로 이력 저장 요청이 중복으로 발생했다. 이때의 에러는 DataIntegrityViolationException 해당 에러를 try - catch 로 잡아서, 500 -> 400 error 로 응답 수정했다. 그리고 log 레벨을 error -> warn 으로 변경했다. 하지만 여전히 500 에러가 발생했고, 변경했던 warning 로그도 당연히 찍히지않았다. 이 에러는 어디서 언제 발생한 것 일까요? 맞춰보세요. 문제의 시발점은 42번 라인입니다. 해당 로직을 타고 들어가보겠습니다. 21번 라인에서 repository.save() 를 수행하고 있습니다. 해당 위치에서 DataIntegrit.. 더보기
[JPA] JPA를 사용해야 하는 이유 JPA는 대안이다. 아주 훌륭한. 어떤 기술로부터 , 왜, 어떻게 JPA가 탄생하고 쓰이게 되었을까 에 대해 포스팅해본다. 01. SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드 CRUD .. INSERT INTO , UPDATE , INSERT , DELETE ✋ 객체에 필드를 하나추가한다면? 모든 쿼리문에 필드를 추가해야한다. Member 객체를 조회할 때 속해져있는 Team 도 같이 조회해야할까? 02. 패러다임의 불일치 📍 객체 vs 관계형 데이터 베이스의 차이 1. 상속 관계형 DB에는 상속 개념이 존재하지 않는다. data를 저장하려면 객체를 분해하여 해당 테이블에 맞는 data를 각각 INSERT , INSERT , UPDATE ... 해주어야한다. 따라서 DB에 저장할 객체에는 상속.. 더보기