inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 데이터 JPA 적용2

JpaItemRepositoryV2 예제에서 update 질문

446

김태경

작성한 질문수 2

0

예제 소스에서 update 기능에서 단순히 set메서드만 수행하면 DB에 저장이 되지 않는거 같습니다.

repository.save까지 호출해야 되는게 아닌지요?

 

Item findItem = repository.findById(itemId).orElseThrow();
findItem.setItemName(updateParam.getItemName());
findItem.setPrice(updateParam.getPrice());
findItem.setQuantity(updateParam.getQuantity());
repository.save(findItem);

spring

답변 1

1

OMG

안녕하세요. 김태경님, 공식 서포터즈 OMG입니다.
JPA는 변경감지란 기술로 필드만 수정해도 별도의 save()없이 값이 수정됩니다.

save()하지 않더라도 수정이 되어야 할텐데, 강의와 다르게 진행하신 부분이 있지 않나 예상합니다.

강의에서 제공해드리는 프로젝트 코드를 실행하여 확인해보시겠어요?

-
영한님의 JPA 활용1편 강의자료 일부 첨부합니다.

도움이 되는 부분은 코드가 작성된 부분과, 아래의 설명입니다.

update() 메서드의 구현코드를 보면 save()가 없으며 설명에도 나와있듯 "변경감지가 동작해서 Update SQL이 실행된다"를 확인해주세요 :)

image

감사합니다.

0

김태경

빠른 댓글 감사드립니다. 다시 확인해보니 @Transactional 을 빼놓아서 그랬네요. @Transactional을 빼면 디폴트로 autocommit으로 동작할거라 생각했는데, JPA에서는 아예 반영이 안되는군요.

0

OMG

단순조회를 제외한 등록, 수정, 삭제는 트랜잭션(@Transactional) 내에서 동작해야합니다 :)

설정 정보 없이 임베디드 데이터베이스 생성

0

41

1

RepositoryTest의 패키지 위치가 domain인 이유

0

60

2

REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!

0

50

1

update()에 사용하는 setter 질문드립니다.

0

63

1

SQL 중심적 개발의 문제점에 대한 질문

0

95

1

혹시 Containing 을 안쓰신 이유가 있을까요?

0

96

2

[공유] 스프링부트 4.x 버전 mybatis 연동

0

213

1

@repository 어노테이션

0

111

3

ItemService

0

67

1

논리 커밋, 물리 커밋 질문드립니다.

0

59

1

내부 트랜잭션 커밋은 필수인가요?

0

64

1

프록시 커넥션 객체를 반환할 때 생성하는건가요?

0

63

1

Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)

2

192

2

JPQL 대신 네이티브 쿼리를 사용해야 하는 경우

0

88

1

@EventListener(ApplicationReadyEvent.class) 관련

0

100

1

트랜잭션 동기화 매니저와 데이터 소스

0

83

1

DB 관련 강의 개설 계획은 없으신건가요?

0

141

2

물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요

0

102

1

스프링 3 버전 이상 rollbackFor 변경된듯요

1

125

1

트랜잭션 전파 질문.

0

95

1

프로젝트 오픈 에러

0

138

1

외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다

0

87

2

같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환

0

80

1

h2 인메모리 테스트중 예약어 충돌날 경우 대처방법

0

107

1