인프런 커뮤니티 질문&답변
제가 이해한게 맞는지 잘 모르겠어요
해결된 질문
작성
·
280
1
안녕하세요 강사님. 변경 감지와 병합 강의를 보다가 질문드립니다. 제가 지금까지 이해한 것이 맞는지 잘 모르겠어요.
- 영속성 컨텍스트 = 엔티티를 영구적으로 저장해주는 환경
- 영속성 컨텍스트가 관리하는 엔티티 = em.persist(이름)으로 persist를 해 준 엔티티
- 준영속 엔티티 = @Id 어노테이션을 통해 영속성 컨텍스트에 식별자가 저장 되었으나, persist하지 않아 영속성 컨텍스트가 관리하지 않는 상태
- 비영속 엔티티 = 일반적인 객체 생성
이렇게 이해를 했는데요, 그렇다면 강의에서 사용된 Book 객체는
상속받은 Item 객체에 @Id 가 있어서 준영속으로 보고
itemService.saveItem() 함수로 Book을 persist 했으므로 영속성 컨텍스트가 관리하는 엔티티가 됨.
이렇게 이해하는게 맞을까요?
그런데 제 생각에 이렇게 영속성 컨텍스트가 관리하는 엔티티가 되었다면 알아서 더티 체크를 통해 변경점이 적용될 것 같은데... 다시 @Transactional 을 이용해 flush하는게 이상해서 여쭤봅니다.
항상 답변해주셔서 감사합니다. 좋은 하루 되시길 바랍니다.
퀴즈
회원 가입 시 화면 입력 데이터를 엔티티 객체 대신 별도의 Form 객체로 받는 주된 이유는 무엇일까요?
데이터베이스 성능을 최적화하기 위해서
화면 종속적인 데이터나 유효성 검증 로직을 분리하기 위해서
JPA 영속성 컨텍스트와 직접적인 관계를 맺기 위해서
코드의 자동 생성 기능을 활용하기 위해서
답변 2
0
안녕하세요. ye k님^^
영속 상태의 엔티티도 트랜잭션 커밋 시점에 플러시가 되어야 변경사항이 DB에 저장됩니다.
사실 궁금한 점들이 좀 있으실 건데, 이 부분은 JPA 기본편을 공부하시면 확실하게 이해가 되실거에요^^!
두번째 질문하신 부분도 JPA 기본편에서 영속성 컨텍스트에 대한 기본을 다지면 자연스럽게 이해하실 수 있습니다.
화이팅!
0
준영속에 관해서는 아래 질문에
"수정을 위해 html form에 데이터를 노출한 이후에 다시 new로 재조립된 엔티티일 수 도 있습니다"
라고 하셨는데... 제가 공부한지 얼마 안돼서 문장 이해가 잘 안되네요ㅠ 강의에서 form에 저장 후 다시 객체로 불러오는 방식을 뜻하는건지 궁금합니다.





