OSIV ON 상태일 때
95
16 asked
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요. 항상 강의 잘 듣고 있는 학생입니다.
다름이 아니라 강의자료에 "OSIV ON 사진"을 보시면 Filter Interceptor, View, Controller는 영속 상태임에도 불구하고 수정 불가능이라고 적혀 있습니다.
제가 지금까지 알고 있는 바로는 영속성 컨텍스트가 존재한다는 것은 데이터베이스 커넥션을 갖고 있다는 뜻이라 위 3개의 파트에서 데이터 수정이 발생하면 Flush를 통해 데이터 수정이 가능한거 아닌가요 ?
혹시 제가 사진의 내용을 잘 못 이해한건지 아니면 위 내용을 잘 못 이해한건지 궁금해서 질문 드립니다. 감사합니다. 무더위 조심하세요 !
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다. 병훈님
OSIV(Open Session in View)는 스프링 부트에서 기본적으로 활성화되어 있으며, 트랜잭션 범위 외의 컨트롤러나 뷰에서도 엔티티를 조회할 수 있게 하는 기능을 제공합니다. 그러나, 이 작업은 주로 “조회”에 초점을 맞추고 있으며, “수정”에는 적합하지 않습니다.
영속성 컨텍스트는 트랜잭션 내에서 데이터 변경(수정, 삭제 등)을 관리합니다. OSIV가 켜져 있는 경우, 컨트롤러나 뷰에서도 엔티티는 영속 상태를 유지할 수 있지만, 트랜잭션이 없기 때문에 데이터가 실제로 DB에 반영되지는 않습니다. 즉, 트랜잭션 범위를 벗어난 컨트롤러나 뷰에서의 수정은 즉시 DB에 반영되지 않으며, 이를 안티 패턴으로 볼 수 있습니다. 수정 작업은 가능한 서비스 계층 내에서 트랜잭션이 활성화된 상태에서 수행하는 것이 보안과 일관성 측면에서 안전합니다.
이 내용에 대한 더 깊은 이해를 위해 OSIV 설정과 관련된 강의의 내용을 검토해 보시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의 관련 외 질문입니다.
0
64
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
0
85
1
BeanCreationException
0
86
3
Update 후 UpdateMemberResponse 매핑할 때
0
46
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
97
2
페이징 + 검색조건 관련해서 질문드립니다.
0
70
1
Query Dsl Q파일 질문입니다.
0
81
1
루트 쿼리라는것은
0
58
1
메서드를 분리하는 기준
0
61
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
108
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
83
2
fetch join과 영속화와 OSIV의 관계
0
83
2
Distinct 사용 전 결과에 대한 의문
0
113
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
55
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
77
2
dto 필드 속 엔티티 여부
0
58
1
뷰템플릿 사용 시
0
76
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
85
1
DTO 대신 Form 사용은 안되나요?
0
133
1
fetch join VS fetch join 페이징 궁금증
0
179
2
양방향 연관관계 알아보는 법?
0
104
1
16강 17강 간단 정리 이게 맞을까요 ?
0
165
2
데이터 초기화 시 CASCADE 옵션 궁금증
0
89
2

