1ebec223e0dc2bae61ab96b304de297d3884526f57277c9b9f8ee2abf11c3bc50f5c6d6975b59870cceaee4ef07d18babd1a


자 테스트가 동기화 대상으로 판단됐어. 이 데이터는 깨지면 안되는 데이터야.

일단 옵티미스틱 박아. 트랜지언트 필드 만들어.

그리고 핸들러 지정해


1ebec223e0dc2bae61ab96b304de297d3884526f57277c9b9f8ee2abf11c3bc50f5e6c6975b59870cceaee4ef07d1abf21ad

핸들러 안에서 빈 호출한다음 엔티티매니저 가져오고

리프레시해서 버전 갖고와

물론 이때 이 찰나의 순간에 또 깨지면 안되니까, 페시미스틱 락을 걸어. 페시미스틱이 select for update다.

그냥 업데이트 락 걸어버려. 이 데이터 아무도 못건든다.

그리고 리프레시하면 변경이 초기화되거든?

그니까 변경감지 이전의 상태를 저장했다가

다시 변경해.

이부분 존나 귀찮은데 자동화 잘해라.

리플렉션 쓰고 이 핸들러란것도 아예 뭐 오브젝트를 받도록 공유시켜버리던지

아니면 걍 뭐 상속써서 protected로 구현하는것도 뭐 .. 뭐 그정도도 오케이 ㅇㅇ

근데 그냥 리플렉션 쓰자 애들아


1ebec223e0dc2bae61ab96b304de297d3884526f57277c9b9f8ee2abf11c3bc50f5f6c6975b59870cceaee4ef07d1bb8047b


이거는 왜 오토와이어 대신에 이따구냐면

빈이라는건 인스턴스 필드에 오토와이어하는거기땜에 스태틱에다가 담으려면 빈이 생성될때 스태틱을 초기화하도록 설정해야함

이거를 러너 만들어서 할수도있겠지만

이런 깔끔한 방법이 있더라고


채용하자


1ebec223e0dc2bae61ab96b304de297d3884526f57277c9b9f8ee2abf11c3bc61caf9ced5260a756a8dc0a3d6b6728cad8b3


자 이렇게 생각하면된다


그냥 일단 무뇌로 저 setVersionCheck 부분 코드 작성하지마


성능 필요한 경우


이거는 위험해도 그냥 통과시켜!! 라는 특단의 조치에서만 저 setVersionCheck(false) 를 넣어주도록 하자.




이제 우리가 얻은건?


초기 세팅만 좀 해주면


무비용 안전성

그리고


안전성풀고싶으면 불리언값만 수정해주면 됨.



솔직히 이 기능을 jpa에서 자체적으로 제공해주는게 맞다고 생각하지만

없어서 내가 그냥 방법을 찾아냈다.




글구 익셉션 처리도 안되어있고

자동화도 안되어있음.


근데 그 영역은 뭐 짬만있으면 다들 하잖아?


대충 핵심아이디어는 알려줬으니까

이거 써봐


꽤 좋은거같음.




글구


나는 프로젝트 이번에 처음으로 제대로 시작해보는데



솔직히


프레임워크만 계속 건드리게되네



하...


내 주력언어인 클로저에대해서 이걸 해야되는데

자바를 하고있네...



근데 이래버리니까 나 자바 벗어나기가 싫다 ㅠㅠ