자 테스트가 동기화 대상으로 판단됐어. 이 데이터는 깨지면 안되는 데이터야.
일단 옵티미스틱 박아. 트랜지언트 필드 만들어.
그리고 핸들러 지정해
핸들러 안에서 빈 호출한다음 엔티티매니저 가져오고
리프레시해서 버전 갖고와
물론 이때 이 찰나의 순간에 또 깨지면 안되니까, 페시미스틱 락을 걸어. 페시미스틱이 select for update다.
그냥 업데이트 락 걸어버려. 이 데이터 아무도 못건든다.
그리고 리프레시하면 변경이 초기화되거든?
그니까 변경감지 이전의 상태를 저장했다가
다시 변경해.
이부분 존나 귀찮은데 자동화 잘해라.
리플렉션 쓰고 이 핸들러란것도 아예 뭐 오브젝트를 받도록 공유시켜버리던지
아니면 걍 뭐 상속써서 protected로 구현하는것도 뭐 .. 뭐 그정도도 오케이 ㅇㅇ
근데 그냥 리플렉션 쓰자 애들아
이거는 왜 오토와이어 대신에 이따구냐면
빈이라는건 인스턴스 필드에 오토와이어하는거기땜에 스태틱에다가 담으려면 빈이 생성될때 스태틱을 초기화하도록 설정해야함
이거를 러너 만들어서 할수도있겠지만
이런 깔끔한 방법이 있더라고
채용하자
자 이렇게 생각하면된다
그냥 일단 무뇌로 저 setVersionCheck 부분 코드 작성하지마
성능 필요한 경우
이거는 위험해도 그냥 통과시켜!! 라는 특단의 조치에서만 저 setVersionCheck(false) 를 넣어주도록 하자.
자
이제 우리가 얻은건?
초기 세팅만 좀 해주면
무비용 안전성
그리고
안전성풀고싶으면 불리언값만 수정해주면 됨.
솔직히 이 기능을 jpa에서 자체적으로 제공해주는게 맞다고 생각하지만
없어서 내가 그냥 방법을 찾아냈다.
글구 익셉션 처리도 안되어있고
자동화도 안되어있음.
근데 그 영역은 뭐 짬만있으면 다들 하잖아?
대충 핵심아이디어는 알려줬으니까
이거 써봐
꽤 좋은거같음.
글구
나는 프로젝트 이번에 처음으로 제대로 시작해보는데
솔직히
프레임워크만 계속 건드리게되네
하...
내 주력언어인 클로저에대해서 이걸 해야되는데
자바를 하고있네...
근데 이래버리니까 나 자바 벗어나기가 싫다 ㅠㅠ
웹개발도 충분히 폼나게 할 수 있다
저기 글 주작해서 념글되는거 뻔히 알면서 념글요망이래 ㅋㅋㅋㅋ 참..