작성
·
113
·
수정됨
답변 2
0
ililil 님 안녕하세요.
@Modifying 가 뭔지 몰라서 찾아보았는데요.
해당 어노테이션은 동시성제어라기보다는 데이터의 수정이 있는것을 명시하기위해서 사용하는것 같아요.
어노테이션이랑은 무관하게 락은 여러스레드가 하나의 데이터에 접근하여 문제가 발생될것이라고 예상하는 지점에 진입하기 전에 걸고 데이터의 수정을 완료한 이후에 해제하면 될것같습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. ililil님.
동시성 제어는 시스템의 실시간 성능과 데이터 일관성을 유지하기 위해 중요합니다. @Modifying
어노테이션은 Spring Data JPA에서 데이터베이스 데이터를 수정하기 위해 사용되며, 주로 @Query
와 함께 사용되어 직접 쿼리를 실행할 수 있게 합니다. 하지만, 이는 직접적인 동시성 제어 수단이라기보다는 데이터베이스 수정 작업에 활용됩니다.
동시성 제어는 크게 두 가지로 나누어 생각할 수 있습니다:
1. 낙관적 락(Optimistic Locking):
- 데이터가 변경될 가능성이 적을 때 주로 사용됩니다.
- @Version
어노테이션을 통해 버전 정보를 이용하여 충돌을 감지하며, 충돌이 발생하면 트랜잭션을 되돌립니다.
LockModeType.PESSIMISTIC_WRITE
등으로 지정할 수 있습니다.@Modifying
은 이러한 락들과 상관없이 데이터베이스의 변경을 가할 수 있도록 하는 역할을 하며, 주로 스프링 데이터 JPA와 함께 명시적인 데이터베이스 쿼리를 사용합니다.
아래는 관련된 동시성 제어 방법에 대해 더 이해를 도와줄 수 있는 몇 가지 질문 링크입니다. 이를 통해 동시성 제어의 다양한 측면에서 더 깊게 이해하실 수 있습니다:
synchronized
키워드와 @Transactional
의 사용 차이.보다 상세한 내용은 동시성 제어 및 데이터베이스 트랜잭션 관리에 대한 학습이 필요할 수 있습니다. 이것이 실습과 실제 적용이 필요한 이유이기도 합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.