작성
·
354
0
강사님 안녕하세요.
강의중에 JPA로 데이터 변경시 @transactional이 필요하다고 말씀하셨는데요.
트랜젝션이 시작해야 hibernate session이 실행되는걸로 알고 있어서 궁금해서 여쭙니다.
실제로 find쪽은 트랜젝션이 없어도 데이터 조회가 가능하더라구요.
이게 가능한 이유가 라이브러리단에서 조회기능들은 transactional을 어딘가 달고 있어서인가요? 아니면 원래부터 조회는 transactional이랑 상관이 없는것인가요?
(spring data jpa에서는 transaction 코드를 라이브러리에서 보았는데 entitymanager를 가져다 쓰는쪽에서는 제가 실력이 없어서인지 찾지 못해서 궁금합니다)
추가로.. JPQL로 일부컬럼만 조회할수 있다고 말씀하셨는데.. 일부컬럼만 조회시 영속성 컨텍스트에 해당 엔티티가 등록 되는지 궁금합니다. (더티체킹이나 지연쿼리 등이 지원되는지 궁금합니다)
못난 질문하는 제자를 용서해주세욥 ;ㅁ;
스프링쪽 강의 들은 후 JPA강의 재주행하러 가겠습니다 감사합니다..
답변 1
1
안녕하세요. 대호님
1. JPA는 단순 조회의 경우 트랜잭션 없이 읽기라는 기능을 지원합니다.
2. JPQL로 일부 컬럼만 조회하면 DTO로 조회해야 합니다. 이 경우 영속성 컨텍스트에 관리되지 않습니다.
감사합니다.